WebAssembly 导出的函数怎么在 JS 里调用?

翼杨~ 阅读 26

我用 Rust 编译了一个 .wasm 文件,里面导出了一个叫 add 的函数,但在 JS 里加载后怎么都调用不了。我试过 instance.exports.add,但报错说不是函数。

我的 JS 加载代码是这样的:

WebAssembly.instantiateStreaming(fetch('pkg/add.wasm'))
  .then(result => {
    const add = result.instance.exports.add;
    console.log(add(1, 2)); // 这里直接报错
  });

是不是我漏了什么步骤?Rust 那边用了 #[no_mangle]pub extern "C",应该没问题吧?

我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
欧阳士媛
Rust编译的wasm导出函数默认会加上下划线,应该是命名问题。改JS这边调用方式:

WebAssembly.instantiateStreaming(fetch('pkg/add.wasm'))
.then(result => {
const add = result.instance.exports._add; // 注意下划线
console.log(add(1, 2));
});


或者Rust那边加个 #[export_name = "add"] 覆盖导出名。
点赞
2026-03-07 16:20