javascript - "Unexpected token import"实现原生 ES6 模块

标签 javascript google-chrome ecmascript-6 es6-modules

我需要重构一些 JavaScript 代码,并尝试使用 native 导入/导出命令来实现 ES6 模块。我努力了一段时间才让这项工作正常进行,所以我将在此处记录需要完成的工作以供将来引用。

症状是我在 Chrome 控制台中收到以下消息:

Uncaught SyntaxError: Unexpected token import

我的基本测试代码是:

HTML:

<!DOCTYPE html>
<html>
<body>
<h1>Import test</h1>
</body>
<script type="application/javascript" src="./import.js"></script>
</html>

导入.js:

import { apath } from './alert_path';

alert_path.js:

export function apath() {
    alert('Bang!!!');
}

最佳答案

我必须采取两项措施来解决这个问题。

首先,Chrome 必须为 61+ 或 chrome://flags 必须启用实验性网络平台功能。

其次,script标签必须使用type module:

<!DOCTYPE html>
<html>
<body>
<h1>Import test</h1>
</body>
<script type="module" src="./import.js"></script>
</html>

我找到了第二个答案here在什么是基础知识下?

Modules must be eventually included in your HTML with type="module", which can appear as an inline or external script tag.

顺便说一句,在解决此问题后,示例将因 CORS 违规而失败,除非它通过服务器运行,但这是另一个问题。

关于javascript - "Unexpected token import"实现原生 ES6 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46414004/

相关文章:

javascript - 使用 JavaScript 设置隐藏的表单字段值但请求仍然为空

javascript - 未捕获( promise )DOMException : Failed to execute 'texImage2D' on 'WebGL2RenderingContext' : Tainted canvases may not be loaded

javascript - 解构可选函数参数

javascript - 使用 async wait 和 map 实现一致性

Javascript ES6 - 是否可以在子类中不使用此关键字的情况下使用/调用父类(super class)属性或函数

javascript - 如果窗口的宽度小于值则不运行脚本

javascript - 使用虚拟键盘时 useState 的初始值未更新

javascript - 为什么console.log 说未定义,然后是正确的值?

javascript - 如何使脚本加载和 es6 模块加载一起工作?

css 边框颜色在 Chrome 中不起作用