

自作したJavaScriptのモジュール(ES Module)を別のファイル内でimportしたいのですがうまくいきません。  
`モジュールのソース “file:///C:/Users/username/Programming/jsworks/ascii85/ascii85.mjs”
の読み込みに失敗しました。`  
というエラーが発生します。

このHTMLとjsのコードは同じディレクトリに存在しています。

OS: Windows10 1803  
Browser: Firefox

[code]

    // ascii85.mjs;
    
    function ascii85encode(arr) {
        let str = "";
        let a = [];
        for (let i = 0; i < arr.length; i++) {
            a.push(arr[i]);
            if (a.length === 4) {
                let res = ascii85_str(a);
                str += res;
                a = [];
            }
        }
        if (a.length > 0) {
            for (let n = 0; n < 4 - a.length; n++) {
                a.push(0);
            }
            str += ascii85_str(a);
        }
        return str
    };
    
    function ascii85_str(nums) {
            const uint32 = createUInt32(nums);
            const str = base85_num(uint32);
            if (str === "!!!!!") {
                str = "z";
            }
            return str;
    };
    
    function createUInt32(a) {
        return (a[0] << 24 | a[1] << 16 | a[2] << 8 | a[3]);
    };
    
    function base85_num(n) {
        n = Math.abs(n);
        let res = [];
        for (let p = 0; p < 5; p++) {
            res.unshift(String.fromCodePoint((n%85) + 33));
            n = parseInt(n / 85);
        }
        return res;
    };
    
    
    export { ascii85encode };
[/code]

[code]

    <!DOCTYPE html>
    <html lang="ja">
        <head>
            <meta charset="utf-8">
            <title>Test ascii85</title>
            <script type="module">
                import {ascii85encode} from './ascii85.mjs';
                const textencoder = new TextEncoder();
                const data_uint8 = textencoder.encode("Man s");
                const result = ascii85encode(data_uint8);
                console.log(result);
            </script>
        </head>
        <body>
        </body>
    </html>
[/code]


CC BY-SA 4.0
2018-07-07T03:30:16.193
45379
2019-01-24T03:03:25.643
5246
question
javascript html firefox
JavaScriptのModuleのimportができない


chromeで実行してみると、以下のようなエラーがでました。

> Access to Script at 'file:///...略...' from origin 'null' has been blocked by  
>  CORS policy: Invalid response. Origin 'null' is therefore not allowed  
>  access.

メッセージには、ドメイン名がnullなので CORS
Policyで不正応答とみなされブロックされているとあります。たぶん、ローカルのHTMLファイルを直接開いているので、Originとなるドメインを判断できないためブロックされているのだと思います。

このエラーをもとにググってみると、以下の記事をみつけました。

[ローカル環境でのCORSエラー対策](https://qiita.com/ta-ke-no-bu/items/b7cd4b4719249a9c365e)

対策としては、以下が紹介されています。  
参考になるかもしれません。

  1. ブラウザの起動オプションで、セキュリティポリシーを無効にする
  2. ローカル環境にwebサーバーを導入する


CC BY-SA 4.0
2018-07-07T04:21:02.100
45380
2018-07-07T04:21:02.100
45379
answer