非 Rustup 设置
wasm-pack
使用 wasm32-unknown-unknown
目标编译您的代码。对于 Rustup 设置,wasm-pack
会自动添加此目标(如果您尚未安装),方法是运行 rustup target add wasm32-unknown-unknown
。但是,如果您没有使用 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/
,这样就完成了!