Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6模块导入给予“;未捕获的SyntaxError:意外标识符“;_Javascript_Html_Ecmascript 6_Es6 Modules - Fatal编程技术网

Javascript ES6模块导入给予“;未捕获的SyntaxError:意外标识符“;

Javascript ES6模块导入给予“;未捕获的SyntaxError:意外标识符“;,javascript,html,ecmascript-6,es6-modules,Javascript,Html,Ecmascript 6,Es6 Modules,对于个人项目,我尝试使用ES6导入来编写更干净的代码。作为第一个测试,我正在编写一个应该生成菜单的对象。当我直接加载类时,整个代码都在工作,但是当在ES6中使用导入和导出时,它在main.js中的import行上给出了一个“未捕获的SyntaxError:Unexpected identifier”错误 我有以下文件: assets/js/menu.module.js 'use strict'; export default class Menu { ... } import Menu fr

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

我有以下文件:

assets/js/menu.module.js

'use strict';

export default class Menu
{ ... }
import Menu from "./menu.module.js";

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

'use strict';

export default class Menu
{ ... }
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">

请注意,这些只是相关的代码行

是否使用
行似乎对我没有任何影响。我确实启用了实验模块和ES6模块的chrome标志,因为如果没有它们,我会收到一个关于导入未定义的错误

Chrome版本将是62,所以根据不同的来源(包括谷歌的更新日志本身),这应该是可行的,即使没有标志


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

从我看到的情况来看,您正试图加载文件
menu.module.js
,而实际上它的名称是
menu.js


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

正如@Bergi在评论中提到的,在HTML中的
main.js
导入行中添加
type=“module”
解决了这个问题。现在一切都好了。即

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


感谢所有响应并试图提供帮助的人。

您可以使用任何模块绑定器,其中一个简单灵活的解决方案是
parcel 2
,它现在是测试版,但您可以使用它

 - npm i -D parcel@next
 - parcel index.html


是否有相关的行号?哪个文件出错?@BoyWithSilverWings忘了添加,刚刚添加。它在
main.js的
import
行中,不应该
main.js
也需要
type=“module”
?毕竟,它使用模块语法。你的
窗口.addEventListener(
调用缺少一个右括号。如果你不使用HTML怎么办?我也遇到过类似的情况,但正在使用php注入脚本。我只使用普通javascript,我需要把“.js”放进去我知道React不需要.js扩展名,但我猜这会根据您所处的环境而有所不同。希望这对其他人有所帮助。在以前的评论中,您说添加分号修复了它。现在您说添加类型修复了它。@TomRussell哪个评论?因为我不知道能够找到它。对我来说,问题在于
type=“module”
这件事。在哪里?哪条评论?解决方案是什么?@bernard@Pithikos您也必须将
type=“module”
添加到主脚本中。这正是您留下评论的答案所描述的。这一条:您将在哪里添加
type=“module”
是否在文件中?