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:导入声明可能只出现在模块的顶层” - 但我不确定import语句可以在这里获得更多的顶级。此错误是否是红鲱鱼,并且是否根本不支持导入/导出?


答案 1

实际上,您遇到的错误是因为您需要显式声明您正在加载模块 - 只有这样才允许使用模块:

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

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

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

  • 火狐 60
  • 铬 (桌面) 65
  • 铬 (机器人) 66
  • 野生动物园 1.1

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

  • Chrome Canary 60 – 在 的 Experimental Web Platform 标志后面。chrome:flags
  • 火狐 54 – 设置在 .dom.moduleScripts.enabledabout:config
  • Edge 15 – 在 中的“实验性 JavaScript 功能”设置后面。about:flags

答案 2

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

下面的原始答案

MDN上的导入

目前,此功能尚未在任何浏览器中本机实现。它在许多转译器中实现,例如Traceur Compiler,Babel或Rollup。

浏览器不支持 。import

以下是浏览器支持表:

enter image description here

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