在本機安裝 WebAssembly

了解如何在本機安裝 WebAssembly,在自己的電腦上解 Exercism 的練習


這個 track 從頭到尾都倚賴 Node.js 來提供 WebAssembly 的執行環境。這表示我們假設你在電腦上執行的所有 JavaScript 都會使用 Node.js。

Track 需求

許多電腦出廠時就已經預先安裝了 Node.js,也可能之前就裝過,或是因為某個相依性而被一起裝進來。所以在動手之前,我們先確認一下它是不是已經裝好了:

  1. 開啟一個_終端機_(Terminal、cmd、Powershell、bash……)
  2. 執行node -v

如果 Node.js 已經安裝,就會顯示版本號。請把這個版本記下來。如果 Node.js _尚未_安裝,就會輸出錯誤訊息,通常是類似'node' is not recognised的內容。

Node.js

如果已經預先安裝 Node.js

前往 Node.js 網站。它會顯示_兩個_版本(前提是它偵測得到你的作業系統;否則請先選擇你的作業系統)。如果你的node -v版本與其中一個相符,那就沒問題了。如果不相符,我們建議你改用 Node.js LTS。如果你擔心升級可能弄壞系統上的某些東西,也可以照常繼續使用;不過要是真的出了預料之外的問題,我們可能沒辦法提供支援。

如果還沒安裝 Node.js

安裝 Node.js 有幾種方法:

這兩種方式都支援 Windows、macOS 和 Linux。如果你不知道該怎麼做,用安裝程式最簡單。

  • 我們建議使用LTS版本。在 Node.js 網站上,這個版本也會標示為_recommended_,也就是「最適合大多數使用者」。
  • 依照網頁上和/或安裝程式中的指示,安裝 Node.js。

測試安裝

安裝程式執行完畢、套件管理器安裝完成,或是二進位檔複製好、指示也都照著做完之後,最好測試一下是不是一切正常。

  1. 開啟一個_終端機_(Terminal、cmd、Powershell、bash……)
  2. 執行node -v

顯示的版本應該和網站上的一致。

注意:一定要開啟_新的_終端機視窗。安裝完成後,已經開著的終端機視窗可能沒有重新載入,這表示它們並不知道剛剛安裝了新程式。

說明:'node' is not recognised

如果你用的是官方安裝程式,PATH應該已經自動設定好了。不過要是你的 shell 找不到全域安裝的模組,或是你自己從原始碼建置 Node.js,就要更新PATH,把npm的執行檔加進去。

在 macOS 和 Linux 上,可以把下面這行加進~/.bash_profile或~/.zshrc來完成:

export PATH=/usr/local/share/npm/bin:$PATH

在 Windows 上,開啟開始功能表並搜尋「environment variables」。你需要編輯PATH項目,在這裡_加入_npm執行檔的路徑。這些檔案通常位於C:\Program Files\nodejs。如果用File Explorer瀏覽這個位置,你應該會看到node.exe、npm.bat和npx.bat。

關閉所有已開啟的終端機,然後開一個新的。

練習需求

請依照 這些說明 下載適用於你作業系統的 Exercism CLI。

CLI 安裝並設定好之後,下載第一個練習,也就是hello-world:

exercism download --exercise=hello-world --track=wasm

接下來,每個練習都需要一些工具才能執行測試。你可以在每個練習的資料夾裡執行這個指令來安裝:

npm install

說明:'<package>' is missing / cannot be found

如果你是在_升級_練習之後看到這個訊息,那麼歡迎來到 npm 7 的世界。刪除node_modules和package-lock.json,再重新執行一次指令就能解決。

如果你在意磁碟空間,也不介意多裝一套工具,可以看看 pnpm,它能確保每個套件版本在磁碟上只會安裝一份。這樣的話,請執行pnpm install而不是npm install,一切應該就能正常運作喔。

不過 npm 是什麼,為什麼這樣就能運作?

完成 JavaScript track 並不需要這些資訊,不過如果你很想弄懂剛才到底發生了什麼事,下面幾段就是為你準備的:

這能運作,是因為npm是隨 Node.js 一起附帶的套件管理器,而 Node.js 已經按照上面的步驟安裝好了。npm指令會尋找package.json檔案,這個檔案存在於_每個_練習的資料夾裡。這個檔案列出了上面的"dependencies",npm會把它們下載下來,放進node_modules資料夾。

package.json裡的腳本會使用本機node_modules資料夾裡的執行檔,而測試就是用這些腳本執行的,這在exercise的說明裡有寫。