无法安装货物 wasm-pack

Vil*_*anL 15 openssl rust rust-cargo webassembly wasm-pack

当我cargo install wasm-pack在 Windows 10 64 位上运行时,出现此错误:

\n
error: failed to run custom build command for `openssl-sys v0.9.65`\n\nCaused by:\n  process didn't exit successfully: `C:\\Users\\vilgo\\AppData\\Local\\Temp\\cargo-install2J8ZNz\\release\\build\\openssl-sys-932395a164949059\\build-script-main` (exit code: 101)\n  --- stdout\n  cargo:rustc-cfg=const_fn\n  cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR\n  X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR unset\n  cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR\n  OPENSSL_NO_VENDOR unset\n  openssl-src: Enable the assembly language routines in building OpenSSL.\n  running "perl" "./Configure" "--prefix=C:\\\\Users\\\\vilgo\\\\AppData\\\\Local\\\\Temp\\\\cargo-install2J8ZNz\\\\release\\\\build\\\\openssl-sys-a51d272dcebf1fc5\\\\out\\\\openssl-build\\\\install" "no-dso" "no-shared" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-engine" "VC-WIN64A"\n\n  --- stderr\n  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "Det g\xc3\xa5r inte att hitta filen." }', C:\\Users\\vilgo\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\openssl-src-111.15.0+1.1.1k\\src\\lib.rs:469:39\n  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\nwarning: build failed, waiting for other jobs to finish...\nerror: failed to compile `wasm-pack v0.10.0`, intermediate artifacts can be found at `C:\\Users\\vilgo\\AppData\\Local\\Temp\\cargo-install2J8ZNz`\n\nCaused by:\n  build failed\n
Run Code Online (Sandbox Code Playgroud)\n

我该如何修复它?\n我在常规 cmd 中运行了它。

\n

Jam*_*hra 20

问题

我认为你的问题发生是因为所有这三件事都发生了:

  1. 您可能从 msys shell启动 wasm-pack 构建。
  2. wasm-pack 依赖于 Rust 的 OpenSSL 绑定,默认情况下它尝试通过源代码构建 OpenSSL。
  3. OpenSSL 的构建脚本是用 Perl 编写的。msys Perl 不会创建 Windows 路径作为\目录分隔符,这会导致 OpenSSL 构建失败。

解决方案

这三种解决方案中的任何一种都可以解决您的问题:

修复步骤 #3:使用本机 Windows Perl 编译 OpenSSL

确保您的默认 Perl 安装是“本机”Windows Perl,例如Strawberry Perl。确保您的构建环境不是默认的 msys perl。然后,重新尝试从源代码编译 wasm-pack 和 OpenSSL。

修复步骤 #2:使用预编译的 OpenSSL 库

您可以从源代码构建 wasm-pack,但指示 Rust OpenSSL 绑定查找预编译的 OpenSSL。

如果您还没有,请下载并安装vcpkg,我们将用它来安装 OpenSSL:

git clone https://github.com/Microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
Run Code Online (Sandbox Code Playgroud)

然后使用 vcpkg 安装 OpenSSL:

vcpkg install openssl:x64-windows-static-md
Run Code Online (Sandbox Code Playgroud)

(如果这不起作用,请尝试vcpkg install openssl:x64-windows。)

然后尝试编译 wasm-pack。设置VCPKG_ROOT为告诉 Rust OpenSSL 构建脚本在哪里查找,并设置OPENSSL_NO_VENDOR=1为阻止构建脚本从源代码编译 OpenSSL。

set VCPKG_ROOT=c:\path\to\vcpkg\installation
set OPENSSL_NO_VENDOR=1
cargo install wasm-pack
Run Code Online (Sandbox Code Playgroud)

修复步骤 #1:在 Windows 上使用预编译的 wasm-pack 二进制文件。

如果您不想编译 wasm-pack 或 OpenSSL,可以使用rustwasm 下载页面上的 Windows 安装程序 ( wasm-pack-init.exe ) 。或者,您也可以在Windows Subsystem for Linux (WSL)中运行 wasm-pack 版本。

  • 这些解决方案中的任何一个都不太适合初学者按照[this](https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm)学习wasm。好吧,直接下载就可以了...但是仍然...特别是因为之前版本的“wasm-pack”(“0.9.1”)安装没有问题。 (3认同)