Es 6模块已加载到Chrome中但未运行

时间:2017-06-18 21:41:30

标签: javascript google-chrome ecmascript-6 es6-modules

在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;显示在控制台中。

2 个答案:

答案 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;。