加载模块脚本失败:服务器以非JavaScript MIME类型"text/plain"响应。根据HTML规范,对模块脚本强制执行严格的MIME类型检查。
我得到这个错误在chrome后,试图添加此行到我的HTML代码:
<script type="module">import * as hello from './__target__/hello.js'; window.hello = hello;</script>
<!-- From the official documentation of Transcrypt -->
我已经尝试修复了几个小时,有人建议将类型更改为text/javascript并使用src标记(src ='./target/hello.js'),但我需要在hello.js中进行一些导入
- 已修复:**好的,我是从命令行使用'python-m http. server'启动服务器的,我只是用这个python2脚本替换了它:
#Use to create local host
import SimpleHTTPServer
import SocketServer
PORT = 8000
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
Handler.extensions_map.update({
".js": "application/javascript",
});
httpd = SocketServer.TCPServer(("", PORT), Handler)
print ("Serving at port", PORT)
print(Handler.extensions_map[".js"])
httpd.serve_forever()
5条答案
按热度按时间disho6za1#
这个问题(以及涉及的脚本)确实帮了我很大的忙,我已经修改了答案中提供的脚本,使其与python3兼容。
值得注意的改变包括:
1.已将SimpleHTTPServer更改为http.server。从python3开始,SimpleHTTPServer已成为http.server的一部分
1.已将套接字服务器模块更改为套接字服务器
这些函数向后兼容。
vdzxcuhz2#
您的Web服务器正在使用
Content-Type: text/plain
服务hello.js
,这是浏览器不允许的,因为它不是JavaScript。您需要更新Web服务器配置,以便它使用
Content-Type: application/javascript
服务该文件(可能还有所有*.js
文件)。mqxuamgl3#
另一种选择是将Javascript文件重命名为
*.mjs
,而不是*.js
。https://github.com/python/cpython/issues/75896f87krz0w4#
在我的例子中(Windows 10 + Django 2.2.25),它是Windows注册表Computer\HKEY_CLASSES_ROOT. js有一个内容类型键设置为text/plain。将其更改为application/javascript,它再次工作。Django使用view.py和static.py来提供使用mimetype(来自Python库)的静态文件(static.serve)。mimetype.py调用mimetypes.guess_type()
smdnsysy5#
我用IIS托管我的Angular 编译网站,不得不将
.js
文件中的mime类型从application/javascript
更改为text/javascript
,然后由于某种原因它工作了。