Car*_*ten 5 javascript web-worker webpack webassembly
webpack可以在worker中导入wasm吗?在我的普通 js 代码中,我可以像这样导入 wasm:
import('../wasm/hello_world.wasm').then(module => {
console.log(module.add_one(9))
})
Run Code Online (Sandbox Code Playgroud)
相同的代码在工作人员内部不起作用。它返回以下错误消息:
Uncaught TypeError: Cannot read property './src/wasm/hello_world.wasm' of undefined
Run Code Online (Sandbox Code Playgroud)
我的 webpack 配置是 webpack worker 和 wasm 示例的组合。
小智 3
根据最初的问题和评论,看起来有兴趣为 C/Emscripten 和 Rust 编译的 WASM 解决这个问题。
我发现下面的文章很好地解释了如何实现 Emscripten 生成的 wasm 的结果:
https://medium.com/@c.gerard.gallant/web assembly-web-workers-f2ba637c3e4a
至于 Rust,我本来打算对此提出自己的解决方案,并提供一个 github 存储库来配合我的答案,但在我的研究过程中,我发现该开发人员已经很好地解决了该问题,并善意地为我们提供了一个随时可用的模板。
谢谢维克多·加夫里什!
https://github.com/VictorGavrish/rust-wasm-worker-template
README.md 中的步骤有点过时了。我能够通过执行以下操作来构建和运行该项目:
将存储库克隆到本地并执行:
cd rust-wasm-worker-template/www
npm install
npm run build
npm run start
Run Code Online (Sandbox Code Playgroud)
一旦 webpack 完成所有内容的捆绑,就可以通过控制台上提供的 URL 访问开发站点。
一般来说,需要记住的重要事情是网络工作者的局限性。无法直接访问 dom 或控制台,您必须处理从工作线程到主线程的消息传递,然后输出到控制台。我特别提到这一点是因为OP使用了一个名为console.log的示例...
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |