【问题标题】:TypeScript: This expression is not callable. No constituent of type 'ExportValue' is callable. WebAssembly moduleTypeScript:此表达式不可调用。没有“ExportValue”类型的成分是可调用的。 WebAssembly 模块
【发布时间】:2021-02-04 05:35:13
【问题描述】:

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

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 代码。

【问题讨论】:

    标签: javascript typescript webassembly deno


    【解决方案1】:

    问题是名称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))
    

    documentation

    对于我的测试,我发现了一个带有 add-function here 的 wasm 示例。

    【讨论】:

    • 哦,该死的,我阅读了该文档,完全错过了 as CallableFunction 部分,非常感谢!
    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 2021-10-11
    • 1970-01-01
    • 2020-08-08
    • 2020-12-27
    • 2020-09-06
    相关资源
    最近更新 更多