Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack Rust/Wasm:未找到模块:错误:Can';t解决';环境';在里面_Webpack_Rust_Webassembly_Wasm Bindgen - Fatal编程技术网

Webpack Rust/Wasm:未找到模块:错误:Can';t解决';环境';在里面

Webpack Rust/Wasm:未找到模块:错误:Can';t解决';环境';在里面,webpack,rust,webassembly,wasm-bindgen,Webpack,Rust,Webassembly,Wasm Bindgen,我正在尝试将一个端口导入wasm。我当前的工具链是: wasm包 网页包 wasm bindgen 有关构建系统的更多信息: 在我的rust板条箱(这是一个--lib板条箱)中,我只调用wasm pack build--target browser。这将创建一个包含wasm blob和相关js文件的pkg文件夹。这里的编译人员没有抱怨 然后,在pkg中,我运行npm-link(只运行一次) 然后,cargo生成--githttps://github.com/rustwasm/wasm-pac

我正在尝试将一个端口导入wasm。我当前的工具链是:

  • wasm包
  • 网页包
  • wasm bindgen
有关构建系统的更多信息:

在我的rust板条箱(这是一个
--lib
板条箱)中,我只调用
wasm pack build--target browser
。这将创建一个包含wasm blob和相关js文件的
pkg
文件夹。这里的编译人员没有抱怨

然后,在
pkg
中,我运行
npm-link
(只运行一次)

然后,
cargo生成--githttps://github.com/rustwasm/wasm-pack-template
创建所需的web应用程序样板。在这个命令生成的文件夹中,我运行
npmlinkschnorrkel js
使其可见<代码>npm运行启动运行网页开发服务器

绑定简单的计算函数和警报等初始测试工作正常

当我开始使用上述板条箱()中的某些(而不是任何)函数时,一切都会中断()。不幸的是,我收到的错误消息没有提供任何信息,根本没有帮助:

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 nightly版本(
    rustc 1.34.0-nightly(d17318011 2019-02-07)

  • 其余的设置步骤直接从中执行

  • 货舱

示例代码:

#[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)
}


如前所述,
clear\u on\u drop
依赖项使用的C代码可能会出现问题

尝试在
schnorrkel
板条箱上启用
nightly
功能,从而在
clear\u on\u drop
上启用
nightly
功能,禁用其在
Cargo.toml上使用C.:

[dependencies]
wasm-bindgen = "0.2"
schnorrkel = { git = "https://github.com/w3f/schnorrkel.git", features = ["nightly"] }
或者,您可以在编译的
.wasm
二进制文件上使用
wasm2wat
(有)来检查导入失败的
env

[dependencies]
wasm-bindgen = "0.2"
schnorrkel = { git = "https://github.com/w3f/schnorrkel.git", features = ["nightly"] }