Rust/Wasm: Module not found: Error: Can't resolve 'env' in
我正在尝试将此package箱的package器移植到wasm中。我当前的工具链是:
- 垃圾袋
- 网页包
- 瓦斯宾德根
有关构建系统的更多信息:
在我的防锈箱(
然后在
然后,
初始测试(如绑定简单的计算功能和警报)可以正常工作。
当我开始使用提到的板条箱(示例)中的一些(不是任何)功能时,一切都中断了。不幸的是,我收到的错误消息非常无用,根本没有帮助:
1 2 3 4 5 6 7 8 9 10 11 12 | Entrypoint main = bootstrap.js [../pkg/schnorrkel_js.js] 3.53 KiB {0} [built] [../pkg/schnorrkel_js_bg.wasm] 93.7 KiB {0} [built] + 27 hidden modules ERROR in ../pkg/schnorrkel_js_bg.wasm Module not found: Error: Can't resolve 'env' in '.../schnorrkel-js/pkg' @ ../pkg/schnorrkel_js_bg.wasm @ ../pkg/schnorrkel_js.js @ ./index.js @ ./bootstrap.js @ multi (webpack)-dev-server/client?http://localhost:8080 ./bootstrap.js |
这是什么原因?我强烈猜测某些基本功能不是可移植到wasm的,而是到底哪一个,为什么以及错误消息试图说的是什么?
注释:
-
我正在使用最新的rust夜间版本(
rustc 1.34.0-nightly (d17318011 2019-02-07) ) - 其余的设置步骤直接来自Rust和Webassembly书。
-
Cargo.toml
1 2 3 4 5 6 7 8 9 10 | [package] name ="schnorrkel-js" edition ="2018" [lib] crate-type = ["cdylib"] [dependencies] wasm-bindgen ="0.2" schnorrkel = { git ="https://github.com/w3f/schnorrkel.git" } |
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #[wasm_bindgen] pub fn verify(signature: &[u8], message: &[u8], pubkey: &[u8]) -> bool { let sig = match Signature::from_bytes(signature) { Ok(some_sig) => some_sig, Err(_) => return false }; let pk = match PublicKey::from_bytes(pubkey) { Ok(some_pk) => some_pk, Err(_) => return false }; // works up until here if I return a boolean. // calling this breaks everything. pk.verify_simple(SIGNING_CTX, message, &sig) } |
这似乎是
尝试启用
上
1 2 3 | [dependencies] wasm-bindgen ="0.2" schnorrkel = { git ="https://github.com/w3f/schnorrkel.git", features = ["nightly"] } |
或者,您可以在编译的