非 Rustup 安裝
wasm-pack
使用 wasm32-unknown-unknown
目標編譯您的程式碼。如果您尚未安裝此目標,wasm-pack
將會在 Rustup 安裝中自動新增,方法是執行 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 版本是網址的一部分,這表示對於 rustc 1.33.0
,網址看起來像這樣:https://static.rust-lang.org/dist/rust-std-1.33.0-wasm32-unknown-unknown.tar.gz
。
以下是一些不同 rustc 版本網址的範例
- 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
或直接在網頁瀏覽器中造訪網址來下載此 tarball。
在您選擇的位置下載此 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/
,這樣就可以了!