非常に単純なアプリケーションでローカルノードサーバーを実行しようとすると、次のエラーメッセージが表示されます(以下のコーディングを参照)。
「 http:// localhost:8080/importing.js 」からのロードモジュールは、MIMEタイプ(「text/html」)が許可されていないためブロックされました。
ノードとES6モジュールは初めてなので、問題の詳細がよくわかりません。これによると [〜#〜] url [〜#〜] MIMEタイプ 'application/javascript'はモジュールに対して明示的に提供する必要があります。しかし、以下の私の例ではこれをどのように達成しますか?
index.html
<!DOCTYPE html>
<html>
<head>
<script src="./importing.js" type="module"></script>
<meta charset="utf-8">
</head>
<body>
</body>
</html>
server.js
var http = require('http');
var fs = require('fs');
const PORT=8080;
fs.readFile('./index.html', function (err, html) {
if (err) throw err;
http.createServer(function(request, response) {
response.writeHeader(200, {"Content-Type": "text/html"});
response.write(html);
response.end();
}).listen(PORT);
});
importing.js
import {a} from './exporting.js';
console.log(a);
exporting.js
export const a = 'Constant a';
私はCMDでサーバーを起動します
node server.js
コマンドだけをインポートしていることはわかっていますが、これに対する私の解決策を知らせて、興味があるかどうかを確認します。このエラーは、私にとって、モジュールのimportステートメントから発生しました。基本的に同じサーバーとHTMLを使用しながら、ファイル全体をインポートしようとしましたが、すべての機能とインポートがありました。
私のimporting.js:
import * as Spotify from "./spotify-web-api.js";
window.basicAlert = function basicAlert() {
alert("this is a test to see if basicAlert runs properly");
}
console.log("Should print to console with no error on imports");
import * as
の背後にあるロジックはわかりませんが、MIMEタイプのエラーをスローせずにファイルを正常にインポートすることができました。 window.basicAlert =
に関しては、Javascriptは、手動でウィンドウにアタッチされていない限り、関数や変数へのアクセスをインポートするファイルを提供したくないようです。現在、このエラーは発生していませんが、ファイルが正常にインポートされると、a
が定義されていないことが示されます。 importing.jsで関数にアタッチしていますが、exporting.jsに次のように配置する必要があります。
const a = 'Constant a';
windows.a = a;
私はそれをテストしませんでした^が、私には理にかなっています。これがあなたを助けたり、もっと近づいたりして私の問題が解決したことを願っています。