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

Javascript Es 6模块已加载到Chrome中,但未运行,javascript,google-chrome,ecmascript-6,es6-modules,Javascript,Google Chrome,Ecmascript 6,Es6 Modules,在Chrome Canary 64位版本61.0.3134.0中,我启用了实验标志“实验Web平台标志”,如本文所述 这应该允许我在浏览器中使用ES6模块,而无需构建步骤。我的设置非常简单:我有2个文件: My index.html: <!DOCTYPE html> <html lang="en"> <head></head> <body> <script type="module" src="app.js"></sc

在Chrome Canary 64位版本61.0.3134.0中,我启用了实验标志“实验Web平台标志”,如本文所述

这应该允许我在浏览器中使用ES6模块,而无需构建步骤。我的设置非常简单:我有2个文件:

My index.html:

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<script type="module" src="app.js"></script>
</body>
</html>

我可以在Chrome开发工具的“网络”选项卡中看到app.js已加载,但控制台中什么也没有发生。没有错误消息。但是,如果我从脚本标记中删除type=“module”,控制台中将显示消息“hello”。

我正在从文件系统加载文件


要使ES 2015加载工作正常,必须从Web服务器加载文件。一个简单的Node Express服务器完成了这一任务。

如果web服务器没有为javascript文件报告正确的MIME类型,则可能发生这种情况

发生的情况是:浏览器请求该文件,服务器检索并返回该文件,但content type响应头不包含javascript文件的任何有效MIME类型,因此浏览器拒绝进一步处理该文件。这种行为符合ES6规范,我观察到Chrome实际上就是这样

javascript文件存在许多有效的MIME类型,“application/javascript”就是其中之一,web服务器必须能够正确识别javascript文件本身,并在响应中返回特定的MIME类型。如果决定对javascript模块使用“.mjs”文件扩展名而不是“.js”,这可能有点棘手

console.log('hello');