wasm-pack build提示binaryen下载失败,使用vpn代理都不行的解决方案

1,087 阅读2分钟

在wasm-pack build时,遇到如下问题

PS F:\workspace\project\rust\hello-webassembly> wasm-pack build
[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
warning: function `set_panic_hook` is never used
 --> src\utils.rs:1:8
  |
1 | pub fn set_panic_hook() {
  |        ^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: `hello-webassembly` (lib) generated 1 warning
    Finished release [optimized] target(s) in 0.06s
Error: failed to download from https://github.com/WebAssembly/binaryen/releases/download/version_111/binaryen-version_111-x86_64-windows.tar.gz
To disable `wasm-opt`, add `wasm-opt = false` to your package metadata in your `Cargo.toml`.
Caused by: failed to download from https://github.com/WebAssembly/binaryen/releases/download/version_111/binaryen-version_111-x86_64-windows.tar.gz
To disable `wasm-opt`, add `wasm-opt = false` to your package metadata in your `Cargo.toml`.
PS F:\workspace\project\rust\hello-webassembly> curl https://github.com/WebAssembly/binaryen/releases/download/version_111/binaryen-version_111-x86_64-windows.tar.gz > E:\software>binaryen-version_111-x86_64-windows.tar.gz

设置命令行的代理set HTTPS_PROXY=http://127.0.0.1:1080也还是报错 一番搜,终于找到解决方案 issues地址:failed to download binaryen-version_90-x86-windows.tar.gz · Issue #864 · rustwasm/wasm-pack (github.com)

原回答如下: 我也遇到了相同的问题,不过我已经解决了。
我的环境是windows,但是我想其他系统的解决方式应该差不多,因为我是在查看wasm-pack的源码时,发现的一个可行的处理办法。
如果你想知道具体源码是什么,建议自行前往并寻找,这并不复杂。
关键在于,wasm-pack在下载前,会使用 which::which("wasm-opt")查找相关的可执行文件位置。而which会在环境变量的PATH中进行寻找。
所以最后的解决办法很简单,在windows上,请把你下载的binaryen-version_90-x86-windows.tar.gz压缩包内的内容,放置到一个提前准备好wasm-opt的文件夹内,例如:D:\rust\binaryen\wasm-opt

最后将这个路径加入系统环境变量PATH中:D:\rust\binaryen\wasm-opt\bin

注意设置好环境变量后,需要重新打开一个新的命令控制台。

自己补充:压缩包需要自己解压到wasm-opt

再次执行wasm-pack build, 成功了

PS F:\workspace\project\rust\hello-webassembly> wasm-pack build --target web
[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
warning: function `set_panic_hook` is never used
 --> src\utils.rs:1:8
  |
1 | pub fn set_panic_hook() {
  |        ^^^^^^^^^^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: `hello-webassembly` (lib) generated 1 warning
    Finished release [optimized] target(s) in 0.07s
[INFO]: found wasm-opt at "E:\\software\\wasm-opt\\bin\\wasm-opt.exe"
[INFO]: Optimizing wasm binaries with `wasm-opt`...
[INFO]: Optional fields missing from Cargo.toml: 'description', 'repository', and 'license'. These are not necessary, but recommended
[INFO]: :-) Done in 1.48s
[INFO]: :-) Your wasm pkg is ready to publish at F:\workspace\project\rust\hello-webassembly\pkg.