我读过很多关于在 Node.js 中运行 wasm 文件的文章。每当我测试代码时,它都会抛出此错误
[TypeError: WebAssembly.instantiate(): Import #0 module="wasi_snapshot_preview1" 错误:模块不是对象或函数]
然后它在结果中不显示任何内容。我正在使用这段代码:
const sp = {
env: {
memoryBase: 0,
tableBase: 0,
memory: new WebAssembly.Memory({
initial: 256
}),
table: new WebAssembly.Table({
initial: 0,
element: 'anyfunc'
})
},
imports: {
imported_func: arg => {
console.log(arg);
}
}
}
const fs = require('fs')
, wasm = WebAssembly.instantiate(new Uint8Array(fs.readFileSync('./test.wasm')), sp)
.then(result => console.log(result));
这段代码引发了上述错误。
我做错了什么吗?
解决方案:
我的代码没有任何问题,而是我编译代码的方式有问题。而不是使用
em++ test.cpp -o test.wasm
我应该使用:
em++ -O1 test.cpp -o test.wasm -s WASM=1
Change test.wasm
to test.js
应该也有效:
em++ -O1 test.cpp -o test.js -s WASM=1
使用 .wasm 作为输出类型或-s STANDALONE_WASM
需要一个运行时wasi_snapshot_preview1
支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)