这是 wasm-pack未发布文档,已发布的文档可在 Rust 和 WebAssembly 主文档站点上找到 。此处记录的功能可能在 wasm-pack 的发布版本中不可用。

非 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/,这样就完成了!