首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MWE:无法加载ES6模块

MWE:无法加载ES6模块
EN

Stack Overflow用户
提问于 2018-09-13 10:47:29
回答 2查看 646关注 0票数 4

我试图在火狐中使用ES6模块,但它不起作用(WTF:除非从磁盘加载)。我把它归结为MWE,但我看不出它有什么问题:

HTML index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8"/>
    <title>title</title>

    <script type="module" src="main.js"></script>

  </head>
  <body>

    <p id="status">failed</p>

  </body>
</html>

模块file.js

代码语言:javascript
复制
export const x = 42;

主脚本main.js

代码语言:javascript
复制
import { x } from './file.js';

window.onload = function() {

    document.getElementById('status').textContent = x;

};

现在,所有这些文件都由NGINX正确地处理:

代码语言:javascript
复制
$ cmp main.js <(curl 'localhost:8080/main.js' 2>/dev/null)
$ cmp file.js <(curl 'localhost:8080/file.js' 2>/dev/null)
$ cmp index.html <(curl 'localhost:8080/index.html' 2>/dev/null)

但它在Firefox中不起作用。在火狐中转到http://localhost:8080/不会启动脚本,并且它的控制台上只显示以下消息:

代码语言:javascript
复制
Loading failed for the module with source “http://localhost:8080/main.js”. localhost:8080:7

没有更多的信息。

Network显示加载了main.js,但file.js甚至没有试过(也就是说,它不会失败加载)。

当然,dom.moduleScripts.enabled;true in about:config

令人惊讶的是,如果让FF直接加载这些东西,它就能工作:

代码语言:javascript
复制
$ firefox index.html

显示了我期待看到的42

使用的版本:

  • 火狐量子62.0 (64位),所有插件禁用并重新启动浏览器. $ firefox -version Mozilla 62.0
代码语言:javascript
复制
- NGINX

$ nginx -v nginx版本: nginx/1.14.0

EN

回答 2

Stack Overflow用户

发布于 2018-09-13 11:22:12

查看来自Content-Type服务器的header。改变它解决了问题。一定是text/javascript。感谢克里斯G的有益评论。

票数 3
EN

Stack Overflow用户

发布于 2019-01-20 10:55:58

同样的问题,不同的场景:我在Firefox控制台中使用webpack和我得到了相同的警告,因为我链接了我的脚本,而不是捆绑文件。

新手犯了错误,但错了。也许能帮到别人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52312102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档