在Chrome Canary 64位版本61.0.3134.0中,我启用了实验标记" Experimental Web Platform flag"详见本文https://medium.com/dev-channel/es6-modules-in-chrome-canary-m60-ba588dfb8ab7
这应允许在浏览器中使用ES6模块而无需构建步骤。我的设置很简单:我有2个文件:
的index.html
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<script type="module" src="app.js"></script>
</body>
</html>
和app.js
console.log('hello')
我可以在Chrome开发工具的网络标签中看到app.js已加载,但控制台中没有任何反应。没有错误消息。但是,如果我删除type =&#34; module&#34;从脚本标签,消息&#34;你好&#34;显示在控制台中。
答案 0 :(得分:1)
我正在从文件系统加载文件。
要使ES 2015加载工作,必须从Web服务器加载文件。一个简单的Node Express服务器就可以解决问题。
答案 1 :(得分:0)
如果Web服务器未报告javascript文件的正确MIME类型,则会发生这种情况。
这是怎么回事:浏览器请求文件,服务器检索并返回文件,但内容类型响应头不包含javascript文件的任何有效MIME类型,因此浏览器拒绝处理文件进一步。这种行为符合ES6规范,我观察到Chrome实际上就是这样做的。
javascript文件存在许多有效的MIME类型,&#34; application / javascript&#34;是其中之一,Web服务器必须能够正确识别javascript文件,并在响应中返回该特定的MIME类型。如果你决定使用&#34; .mjs&#34;这可能有点棘手。 javascript模块的文件扩展名,而不是&#34; .js&#34;。