WebAssembly 启用 SIMD 后在 Vue 项目中报错怎么办?
我在 Vue 项目里尝试用 WebAssembly 的 SIMD 指令加速图像处理,本地开发能跑,但一构建上线就报 “SIMD is not supported”。明明浏览器支持 SIMD 啊,是不是我加载方式有问题?
我试过在 wasm 编译时加 -msimd128,也确认了 Chrome 版本支持,但还是不行。下面是我组件里加载 wasm 的代码:
<script setup>
import initWasm from '@/wasm/image_process_bg.js';
onMounted(async () => {
try {
const wasm = await initWasm();
wasm.process_pixels(new Uint8Array(1024));
} catch (e) {
console.error('WASM SIMD failed:', e);
}
});
</script>
试试改成静态 import 或者在 Vite config 里配置 optimizeDeps 包含你的 wasm:
然后改一下组件里的加载方式,用 defineAsyncComponent 或者直接 import 整个模块,别动态 import:
如果还不行,看看构建后实际加载的 JS 文件里有没有 simd128 的 polyfill 代码,没有的话手动在 index.html 里引入一下。