ES2015 导入在 Firefox 中不起作用(即使在顶级)

新手上路,请多包涵

这些是我的示例文件:

 <!DOCTYPE html>
<html>
<head>
  <title>Test</title>
  <script src="t1.js"></script>
</head>
<body></body>
</html>

t1.js:

 import Test from 't2.js';

t2.js:

 export const Test = console.log("Hello world");

当我在 Firefox 46 中加载页面时,它返回“SyntaxError:导入声明可能只出现在模块的顶层”——但我不确定导入语句可以到达多少顶层。这个错误是不是一个转移注意力的错误,是不是还不支持导入/导出?

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

阅读 367
2 个回答

实际上你得到的错误是因为你需要明确声明你正在加载一个模块 - 只有这样才允许使用模块:

 <script src="t1.js" type="module"></script>

我在 这篇关于在浏览器中使用 ES6 导入的文档 中找到了它。推荐阅读。

这些浏览器版本完全支持(及更高版本; caniuse.com 上的完整列表):

  • 火狐 60
  • Chrome(桌面)65
  • 铬(安卓)66
  • 野生动物园 1.1

在旧版浏览器中,您可能需要在浏览器中启用一些标志:

  • Chrome Canary 60 – 在 chrome:flags 中的实验性 Web 平台标志后面。
  • Firefox 54 – dom.moduleScripts.enabled 中的设置 about:config
  • Edge 15 – 在 about:flags 中的实验性 JavaScript 功能设置后面。

原文由 Tomáš Zato 发布,翻译遵循 CC BY-SA 4.0 许可协议

这不再准确了。 当前所有浏览器现在都支持 ES6 模块

原回答如下

来自 MDN 上的 import

目前,此功能未在任何浏览器中原生实现。它在许多转译器中实现,例如 Traceur 编译器、Babel 或 Rollup。

浏览器不支持 import

这是浏览器支持表:

在此处输入图像描述

如果你想导入 ES6 模块,我建议使用转译器(例如 babel )。

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

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