非 Rustup 设置
wasm-pack
使用 wasm32-unknown-unknown
目标编译您的代码。如果您没有通过 rustup target add wasm32-unknown-unknown
安装,wasm-pack
会自动为 Rustup 设置添加此目标。但是,如果您没有使用 Rustup,那么我们将无法自动执行此操作,您需要自己执行此操作。
手动添加 wasm32-unknown-unknown
免责声明:这不能保证对所有设置都有效。以下说明特定于与确切 rustc 版本匹配的设置,这意味着下载的 wasm32 目标可能不兼容。
要手动添加 wasm32-unknown-unknown
目标,您需要从 rust-lang 网站下载它并将内容放在正确的文件夹中。
所有不同 rustc
版本的所有目标都没有以人性化的方式在网站上呈现(尚未),以便您只需选择您想要的并下载它,原因之一是 Rustup 为您处理所有这些,并且目标的打包主要为工具构建。但是,以下步骤将引导您完成此操作。
首先,通过运行 rustc --version
检查您正在使用哪个版本的 rustc
。这应该显示类似以下内容:rustc 1.33.0 (2aa4c46cf 2019-02-28)
。然后,您需要为您的 rustc 版本下载正确的 wasm32 目标。rustc 版本是 url 的一部分,这意味着对于 rustc 1.33.0
,url 将如下所示:https://static.rust-lang.org/dist/rust-std-1.33.0-wasm32-unknown-unknown.tar.gz
。
以下是不同 rustc 版本的 url 示例
- Nightly https://static.rust-lang.org/dist/rust-std-nightly-wasm32-unknown-unknown.tar.gz
- 特定日期 nightly(2019-03-10)https://static.rust-lang.org/dist/2019-03-10/rust-std-nightly-wasm32-unknown-unknown.tar.gz
- Beta https://static.rust-lang.org/dist/rust-std-beta-wasm32-unknown-unknown.tar.gz
您可以通过执行 wget https://static.rust-lang.org/dist/rust-std-1.33.0-wasm32-unknown-unknown.tar.gz
或只是在 Web 浏览器中访问 url 来下载它。
在您在您选择的某个位置下载了此 tarball 之后,您应该解压缩它。这应该会生成一个名为 rust-std-1.33.0-wasm32-unknown-unknown
的文件夹,其中包含一些文件夹和文件,但有趣的是一个名为 rust-std-wasm32-unknown-unknown
的文件夹,其中包含一个 lib
,并且应该包含一个 rustlib
文件夹,以及一个名为 wasm32-unknown-unknown
的文件夹。这是我们要移动的文件夹。
以下是 rustc 1.33.0 的结构示例
rust-std-1.33.0-wasm32-unknown-unknown
├── components
├── install.sh
├── rust-installer-version
└── rust-std-wasm32-unknown-unknown
├── lib
│ └── rustlib
│ └── wasm32-unknown-unknown
要了解我们应该将此 wasm32-unknown-unknown
文件夹移动到哪里,我们需要运行 rustc --print sysroot
,这应该会打印一个类似于以下路径(这将在不同的操作系统上有所不同):/home/user/rust/rust-1.33.0-2019-02-28-2aa4c46cf
。该文件夹应该包含一个 lib
文件夹,其中包含一个 rustlib
文件夹。我们应该将 wasm32-unknown-unknown
移动到此文件夹。
在类 Unix 操作系统上,我们可以使用以下命令执行此操作:mv rust-std-1.33.0-wasm32-unknown-unknown/rust-std-wasm32-unknown-unknown/lib/rustlib/wasm32-unknown-unknown /home/user/rust/rust-1.33.0-2019-02-28-2aa4c46cf/lib/rustlib/
,就是这样!