個人的なプロジェクトの場合、ES6インポートを使用してよりクリーンなコードを記述しようとしています。最初のテストとして、メニューを生成するオブジェクトを作成しています。クラス全体を直接ロードするとコード全体が機能しますが、ES6でインポートとエクスポートを使用すると、main.js
のimport
行に「Uncaught SyntaxError:Unexpected identifier」エラーが発生します
次のファイルがあります。
assets/js/menu.module.js
'use strict';
export default class Menu
{ ... }
assets/js/main.js
import Menu from "./menu.module.js";
window.addEventListener('DOMContentLoaded', () => {
const menu = new Menu();
});
index.html
<script type="module" src="assets/js/menu.module.js"></script>
<script src="assets/js/main.js">
これらは関連するコード行のみであることに注意してください。
<script type="module">
行を使用してもしなくても、私には何の違いもありませんでした。実験モジュールとES6モジュールのchromeフラグの両方が有効になっています。これらがないと、import
が定義されていないというエラーが表示されます。
Chromeのバージョンは62になるため、さまざまなソース(Googleの更新ログ自体を含む)に応じて、フラグがなくても機能するはずです。
なぜこれが機能していないのか、私が間違っていることについて誰でも私を啓発できますか?
@Bergiがコメントで言及したように、type="module"
インポート行にmain.js
を追加すると問題が解決しました。すべてが現在機能しています。
応答して助けようとしたすべての人に感謝します。
私が見ることができるものから、あなたは実際にmenu.module.js
という名前が付けられている間にファイルmenu.js
をロードしようとしています。
PS:私が覚えていることから、インポートステートメントから.js
を削除することもできます。