You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Emscripten移植WASM单元测试时importScripts加载JS MIME类型错误排查

问题原因

报错的核心诱因是ExampleTests.js文件被静态服务返回了错误的application/wasm MIME类型:浏览器要求可执行JS脚本的MIME类型必须为text/javascript或application/javascript,因此直接拒绝执行该文件,最终触发importScripts调用失败。

你编写的Python静态服务脚本修改extensions_map的方式存在缺陷:SimpleHTTPRequestHandler的extensions_map默认继承系统全部MIME映射规则,直接在子类上追加键值对的写法,在部分Python版本中会出现后缀匹配优先级异常,导致.js后缀被错误匹配到.wasm对应的MIME类型。

修复方案

调整你的Python静态服务脚本,先完整复制父类的MIME映射表,再覆盖需要自定义的条目即可:

#!/usr/bin/env python3

import sys
from http.server import HTTPServer, SimpleHTTPRequestHandler, test
import mimetypes

class CORSRequestHandler (SimpleHTTPRequestHandler):
    def end_headers (self):
        self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
        self.send_header("Cross-Origin-Opener-Policy", "same-origin")
        super().end_headers()

if __name__ == '__main__':
    # 先初始化完整MIME映射表,再覆盖自定义规则
    CORSRequestHandler.extensions_map = {
        **mimetypes.types_map,
        ".js": "application/javascript",
        ".mjs": "application/javascript",
        ".wasm": "application/wasm"
    }
    test(CORSRequestHandler, HTTPServer, port=int(sys.argv[1]) if len(sys.argv) > 1 else 8000)
验证方法

修改后重启静态服务,打开浏览器控制台的网络标签页,查看ExampleTests.js的响应头,确认Content-Type字段值为application/javascript即可。

仍无法解决时需补充的排查信息
  • 当前使用的Python具体版本号
  • Emscripten的编译命令和版本号
  • 运行测试用的浏览器型号和版本号
  • 直接访问http://localhost:8000/ExampleTests.js时,浏览器返回的完整响应头内容

内容的提问来源于stack exchange,提问作者Quentamia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:36:04