在节点中将 hello world 编译为 wasm 和 运行
compile hello world to wasm and run in node
我正在尝试 运行 node.js 中的一个 webassembly 模块,我得到了一个 Wasm decoding failedResult
。我认为我的问题是将节点 Buffer
转换为 ArrayBuffer
。这是我的适用代码:
fs.readFileAsync( WASM_PATH )
.then( buf => buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) )
.then( arrayBuffer => Wasm.instantiateModule(arrayBuffer) )
.then( results => console.log(results.instance) )
.catch( err => console.error(err) );
我收到此错误:
(relevant details)
Wasm decoding failedResult = expected version 0c 00 00 00, found 01 00 00 00 @+4
当我使用 emcc hello_world.c -s WASM=1 -o hello.html
时,我可以加载模块并 运行 它在浏览器中。所以,我很确定这是我这边的问题,或者可能是一些兼容性问题。提前致谢。
您的节点版本使用 V8 的旧 MVP 前版本,预计版本 0xC
。您的工具链发出 now-stable MVP version 0x1
.
Node roughly follows Chrome releases, and Chrome 57 添加了对 MVP WebAssembly 的支持。该页面显示 Chrome 57 的 V8 版本是 5.7.492.65。
因此,Node 中即将支持 MVP。
或者,您可以使用旧的 Emscripten 工具链。虽然它会很旧:0xd
是 MVP 之前的版本(并且 0xd
实际上与 MVP 相同,对版本取模)。
我正在尝试 运行 node.js 中的一个 webassembly 模块,我得到了一个 Wasm decoding failedResult
。我认为我的问题是将节点 Buffer
转换为 ArrayBuffer
。这是我的适用代码:
fs.readFileAsync( WASM_PATH )
.then( buf => buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) )
.then( arrayBuffer => Wasm.instantiateModule(arrayBuffer) )
.then( results => console.log(results.instance) )
.catch( err => console.error(err) );
我收到此错误:
(relevant details)
Wasm decoding failedResult = expected version 0c 00 00 00, found 01 00 00 00 @+4
当我使用 emcc hello_world.c -s WASM=1 -o hello.html
时,我可以加载模块并 运行 它在浏览器中。所以,我很确定这是我这边的问题,或者可能是一些兼容性问题。提前致谢。
您的节点版本使用 V8 的旧 MVP 前版本,预计版本 0xC
。您的工具链发出 now-stable MVP version 0x1
.
Node roughly follows Chrome releases, and Chrome 57 添加了对 MVP WebAssembly 的支持。该页面显示 Chrome 57 的 V8 版本是 5.7.492.65。
因此,Node 中即将支持 MVP。
或者,您可以使用旧的 Emscripten 工具链。虽然它会很旧:0xd
是 MVP 之前的版本(并且 0xd
实际上与 MVP 相同,对版本取模)。