javascript - ES6 导出的意外标记

标签 javascript ecmascript-6 es6-modules

我正在尝试了解 ES6 导出的工作原理。

这里有两个本地文件:

main.html:

<script src="module.js"></script>
<script>
    import {hello} from './module'; // Tried both "module" and "module.js"
    let val = hello();
    alert(val);
</script>

module.js:

export function hello() {
    return 'Hello';
}

预期结果:带有“Hello”文本的警报。实际结果:错误:

module.js - line 1: Unexpected token export

main.html - line 3: Unexpected token {

如何让它发挥作用?

附言。在 Chrome 67 中测试。

最佳答案

Chrome 已添加对 JavaScript 模块的全面支持 since version 61 .这是您在文档中显然遗漏的重要部分:

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

您不必使用第一个脚本; import 将引导浏览器下载所需的模块。所以这应该足够了:

<script type="module">
    import {hello} from './module.js';
    let val = hello();
    alert(val);
</script>

但是,有一个警告:您将无法直接在 Chrome 中从文件系统提供模块 - 您需要设置“常规”HTTP 服务器或应用 this thread 中描述的解决方法.

关于javascript - ES6 导出的意外标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50860173/

相关文章:

javascript - 如何处理对同一个 Web Worker 的多个请求

Javascript 集合 vs 数组 vs 对象定义

javascript - 将对象数组减少为对象

javascript - 如何从 .vue 文件中导出多个对象

javascript - 如何使用默认导出保留 'live binding'

Javascript:导入一个,其余的?

javascript - 如何在 es6 中使用箭头函数而不是 bind 方法

Javascript/Jquery : Show and hide a Loading Screen message

javascript - 从其他 JSP 中创建的 JS 函数接收 JSP 中的值

javascript - Babel 无法在主 Node.js 应用程序之外工作