提问者:小点点

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");

当我在Firefox46中加载该页面时,它返回“SyntaxError:import declarations Mays only Account at top level of a module”--但我不确定import语句在这里还能达到多少顶级。这个错误是不是一个错误,是不是还不支持导入/导出?


共2个答案

匿名用户

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

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

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

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

  • 火狐60
  • Chrome(桌面)65
  • Chrome(android)66
  • Safari 1.1

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

  • Chrome Canary 60-在chrome:flags中的实验Web平台标志后面。
  • 火狐54-dom.modulescripts.enabledabout:config中设置。
  • Edge 15-在about:flags中的实验性JavaScript功能设置后面。

匿名用户

这已经不准确了。现在所有的浏览器都支持ES6模块

从MDN上的import:

这个特性目前还没有在任何浏览器中实现。它在许多Transpiler中实现,如Traceur编译器、Babel或Rollup。

浏览器不支持导入

以下是浏览器支持表:

如果您想导入ES6模块,我会建议使用transpiler(例如,babel)。