es6 导入 using.mjs 后缀失败并出现 MIME 错误

bac*_*ces 3 javascript import module ecmascript-6

在最新的chrome浏览器中

import foo from '../dist/foo.mjs'
Run Code Online (Sandbox Code Playgroud)

失败了

无法加载模块脚本:服务器响应非 JavaScript MIME 类型“”。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。

但是如果我将文件复制到 foo.js

import foo from '../dist/foo.js'
Run Code Online (Sandbox Code Playgroud)

作品!

我正在使用带有 localhost 路径和最新 chrome 的 mac os x 内置 Apache 服务器。

因此,在浏览器中,es6 导入对首选节点后缀 .mjs 很敏感。

导入是在一个 html 文件中,<script type="module">而不是一个单独的模块文件中,但我怀疑这就是问题所在。

有针对这个的解决方法吗?。

Con*_*roß 5

您需要使用.htaccess以下 htaccess 指令使用文件或扩展 Apache 配置文件,以便服务器输出具有正确 MIME 类型的 mjs 扩展名的文件:

<IfModule mod_mime.c>
  AddType text/javascript js mjs
</IfModule>
Run Code Online (Sandbox Code Playgroud)

当然,mod_mime需要安装并启用它才能工作。