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

使用Emscripten编译Wasm Audio Worklet时遇SharedArrayBuffer未定义错误

解决SharedArrayBuffer未定义的错误

出现Uncaught ReferenceError: SharedArrayBuffer is not defined的核心原因是:当前主流浏览器对SharedArrayBuffer API的启用添加了跨源隔离的强制要求,未满足条件时浏览器会禁用该API,而你当前的运行环境没有满足这个要求。

具体解决步骤:

  • 必须使用HTTP服务器访问,不能直接打开本地HTML文件
    直接用file://协议打开生成的worklet.html是无效的,浏览器在本地文件协议下不支持跨源隔离配置,必须通过HTTP服务器访问(如http://localhost:xxxx)。

  • 配置必要的HTTP响应头
    服务器必须同时返回两个响应头才能启用SharedArrayBuffer:

    Cross-Origin-Opener-Policy: same-origin
    Cross-Origin-Embedder-Policy: require-corp
    

    最便捷的方式是使用Emscripten自带的emrun命令启动测试服务器,它会自动添加这两个响应头:

    emrun --port 8080 worklet.html
    

    之后在浏览器访问http://localhost:8080/worklet.html即可。

  • 确认Emscripten版本
    确保你的Emscripten是较新版本,旧版本对Audio Worklet和WASM Workers的支持可能存在兼容性问题,可通过emcc -v检查版本,必要时执行emsdk update && emsdk activate latest更新。

额外说明

你使用的编译命令em++ audioworklet.cpp -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -o worklet.html本身是符合官方要求的,问题出在运行环境的配置上,而非编译参数错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:55:03