以下是我的示例文件:
<!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语句在这里还能达到多少顶级。这个错误是不是一个错误,是不是还不支持导入/导出?
实际上,您得到的错误是因为您需要显式地声明您正在加载一个模块--只有这样才允许使用模块:
<script src="t1.js" type="module"></script>
我在这篇关于在浏览器中使用ES6导入的文档中找到了它。推荐阅读。
在这些浏览器版本中完全支持(及更高版本;caniuse.com上的完整列表):
在较旧的浏览器中,您可能需要在浏览器中启用某些标志:
chrome:flags
中的实验Web平台标志后面。dom.modulescripts.enabled
在about:config
中设置。about:flags
中的实验性JavaScript功能设置后面。
这已经不准确了。现在所有的浏览器都支持ES6模块
从MDN上的import
:
这个特性目前还没有在任何浏览器中实现。它在许多Transpiler中实现,如Traceur编译器、Babel或Rollup。
浏览器不支持导入
。
以下是浏览器支持表:
如果您想导入ES6模块,我会建议使用transpiler(例如,babel)。