首页 > 解决方案 > TypeScript:此表达式不可调用。没有“ExportValue”类型的成分是可调用的。WebAssembly 模块

问题描述

当我使用 Deno 在 index.ts 中运行此代码时,我遇到了这个问题。

const wasm = await Deno.readFile("./wasm_test/pkg/wasm_test_bg.wasm");
const wasmModule = new WebAssembly.Module(wasm);
const wasmInstance = new WebAssembly.Instance(wasmModule);
const wasmTest = wasmInstance.exports;
wasmTest.sum(1, 3); // Error

错误:此表达式不可调用。没有“ExportValue”类型的成分是可调用的。

调用时出现错误sum,结果应该是 4。当我将它作为 index.js 运行时,它可以完美运行。我使用 wasm-pack 编译 Rust 代码。

标签: javascripttypescriptwebassemblydeno

解决方案


问题是名称add未知。更改代码的第 4 行,如下所示:

const wasm = await Deno.readFile("./add.wasm");
const wasmModule = new WebAssembly.Module(wasm);
const wasmInstance = new WebAssembly.Instance(wasmModule);
const sum = wasmInstance.exports.sum as CallableFunction; // exports.add if you test with the below linked wasm.
console.log(sum(1, 3))

请参阅文档

对于我的测试,我在这里找到了一个带有 -function 的 wasmadd示例。


推荐阅读