我有以下 AssmemblyScript 模块:
export function add(a: i32, b: i32): i32 {
return a + b;
}
export function printNum(a: string): f64 {
return parseFloat(a);
}
生成的asc assembly/index.ts --target release
然后我在我的主机 TypeScript 文件中使用它:
import fs from "fs";
import loader from "@assemblyscript/loader";
import { join } from "path";
const wasmModule = loader.instantiateSync(fs.readFileSync(join(__dirname, "..", "/build/untouched.wasm")), {});
module.exports = wasmModule.exports;
我可以打电话add
就好了:
const { add, printNum } = require("./wasm");
console.log(add(1, 2)); // correctly prints 3
但是,尝试调用printNum
不会使我的 Node 进程崩溃,但进程会成功退出,而不会调用代码:
const [row] = await db.getWhere({});
console.log("balance", row.balance, typeof row.balance); // balance 123456789123456789.123456789123456789 string
try {
const result = printNum(row.balance);
console.log("result", result);
} catch (error) {
console.log(error);
}
console.log(add(1, 2));
console.log("done");
该printNum
函数从未被调用,或者它被调用并且内部错误?我在 中没有收到任何错误catch
,并且后续两个 console.logs 永远不会被调用
如果我注释掉整个printNum
try/catch,接下来的两个 console.logs 将被执行
我从哪里开始调试呢?或者任何人都可以在我的 AssemblyScriptprintNum
方法本身中发现任何可能导致这种情况的错误吗?