我正在尝试将一个结构从Rust导出到WebAssembly,但是出现以下错误:
未捕获(承诺)TypeError:wasm.Test不是构造函数
锈:
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen(js_namespace = console)]
fn log(s: &str);
}
#[wasm_bindgen]
pub struct Test {
pub x: i32,
}
#[wasm_bindgen]
impl Test {
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
Self {
x: 0,
}
}
}
JS:
import init from './wasm.js'
async function run() {
const wasm = await init().catch(console.error);
console.log(wasm);
let test = new wasm.Test();
console.log(test);
}
run();
导出结构的正确方法是什么?
请注意,init()
解决后,将返回WASM模块的导出。所以你不会找到Test
,而是可以test_new
代表Test::new
。执行完后,这应该在控制台中可见console.log(wasm);
。
要解决您的问题,您需要Test
在最初导入的位置进行导入init
。
import init, { Test } from './wasm.js';
async function run() {
const wasm = await init().catch(console.error);
console.log(wasm);
let test = new Test();
console.log(test);
}
run();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句