Я прочитал много статей о запуске файлов wasm в node.js. Всякий раз, когда я проверяю код, он выдает эту ошибку
[TypeError: WebAssembly.instantiate (): ошибка импорта # 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