ES6 模块导入给出“未捕获的语法错误:意外的标识符”

新手上路,请多包涵

对于个人项目,我正在尝试使用 ES6 导入来编写更简洁的代码。作为第一个测试,我正在编写一个应该生成菜单的对象。当我直接加载类时,整个代码都在工作,但是在 ES6 中使用导入和导出时,它会在 main.js import 行中给出“Uncaught SyntaxError: Unexpected identifier”错误 ---

我有以下文件:

资产/js/menu.module.js

 'use strict';

export default class Menu
{ ... }

资产/js/main.js

 import Menu from "./menu.module.js";

window.addEventListener('DOMContentLoaded', () => {
    const menu = new Menu();
});

索引.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,因此根据不同的来源(包括谷歌的更新日志本身),即使没有标志,这也应该可以工作。

谁能告诉我为什么这不起作用,以及我做错了什么?

原文由 ZeroThe2nd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 622
2 个回答

正如评论中提到的@Bergi,将 type="module" 添加到 HTML 中的 main.js 导入行解决了这个问题。现在一切正常。 IE

 <script type="module" src="assets/js/main.js">

感谢所有回复并试图提供帮助的人。

原文由 ZeroThe2nd 发布,翻译遵循 CC BY-SA 4.0 许可协议

据我所知,您正在尝试加载文件 menu.module.js 而它实际上被命名为 menu.js

PS:据我所知,您还可以从导入语句中删除 .js

原文由 Marcel Krause 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题