记录今天解决的一个小bug
在终端启动8080端口号监听后,打开网址http://localhost:8080,发现不能正确加载页面,打开检查-控制台,出现如下警告:已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不允许的 MIME 类型 (“text/plain”)。
问题的根本原因是静态文件的 MIME 类型错误。由于使用的是 Python 的 http.server
来提供文件,它默认将 .js
文件的 MIME 类型设为 text/plain
,导致浏览器拒绝加载这些文件。
在网上找了一些方法试了没用,借助gpt,发现可以通过手动设置 Python 服务器的 MIME 类型,但是不太推荐。
1.创建如下代码,如a.py
import http.server
import socketserver
import mimetypes
PORT = 8086
DIRECTORY = "."
class Handler(http.server.SimpleHTTPRequestHandler):
def end_headers(self):
self.send_header("Cache-Control", "no-store")
super().end_headers()
def guess_type(self, path):
# Ensure .js files are served with the correct MIME type
if path.endswith(".js"):
return "application/javascript"
return super().guess_type(path)
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print(f"Serving at port {PORT}")
httpd.serve_forever()
2. 进入a.py的目录,并运行这个脚本
python custom_http_server.py
3。重新打开浏览器,成功加载