Node.js 将hello world编译为wasm并在节点中运行
我试图在node.js中运行一个webassembly模块,我得到了一个Node.js 将hello world编译为wasm并在节点中运行,node.js,webassembly,Node.js,Webassembly,我试图在node.js中运行一个webassembly模块,我得到了一个Wasm解码失败result。我认为我的问题是将节点缓冲区转换为阵列缓冲区。以下是我的适用代码: fs.readFileAsync( WASM_PATH ) .then( buf => buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) ) .then( arrayBuffer => Wasm.instantiateModul
Wasm解码失败result
。我认为我的问题是将节点缓冲区
转换为阵列缓冲区
。以下是我的适用代码:
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时,我可以加载模块并在浏览器中运行它。所以,我很确定这是我这边的一个问题,或者是一些兼容性问题。提前感谢。您的节点版本使用了旧的MVP之前版本的V8,该版本需要
0xC
。您的工具链会发出警告
节点,并添加对MVP WebAssembly的支持。该页面显示Chrome57的V8版本为5.7.492.65
因此,在Node中对MVP的支持迫在眉睫
或者,您可以使用旧的Emscripten工具链。不过它可能已经很老了:0xd
是MVP之前的版本(并且0xd
实际上与MVP相同,以版本为模)