Chrome 中的 ES6 模块

Lyn*_*ner 6 javascript import google-chrome module ecmascript-6

我正在尝试在 Chrome 中使用 ES6 模块。从我看过的所有示例来看,以下似乎是正确的方法,但是当我在 Chrome 的开发人员工具中运行它时,我收到此错误消息...

未捕获的语法错误:意外的标记{

...突出显示模块(script1.js,如下)中尝试导入模块的导入语句。我见过很多类似问题的参考,但没有一个解决这种情况的建议对我有用。如果您能看到我做错了什么,我非常感谢您的帮助......

这是 HTML...

<html>
<head>
    <script src="lib1.js" type="module"></script>
    <script src="script1.js"></script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是模块(lib1.js)...

export function doSomething() {
    alert("in module lib1");
}
Run Code Online (Sandbox Code Playgroud)

这是尝试导入模块的脚本(script1.js)...

import { doSomething } from "lib1.js";
doSomething();
Run Code Online (Sandbox Code Playgroud)

Out*_*man 7

编辑: 经过大约一个小时的挠头并发现我的答案(预编辑)被否决后,我得到了这个:

库.js:

function doSomething() {
    console.log('in module lib');
}
export {doSomething};
Run Code Online (Sandbox Code Playgroud)

脚本.js:

import { doSomething } from './lib.js';
doSomething();
Run Code Online (Sandbox Code Playgroud)

索引.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<script type="module" src="script.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

lib.jsscript.js、 和index.html位于同一目录中。

我添加.js了,import { doSomething } from './lib.js';因为否则它不起作用。根据Mozilla 的说法,某些捆绑商可能允许或要求使用module-name.

但这仅适用于 Firefox Quantum(版本 62.0.3)。我在 Chrome 上启用了实验性 JavaScript(版本 70.0.3538.77):

chrome://flags/#enable-javascript-harmony

没有成功的迹象,但考虑到这在 Firefox 上有效,并且 这个兼容性表显示 Chrome 和 Firefox 处于相同的兼容性级别,这让我更加困惑,所以我可能最终会问一个关于整个事情的问题。