nvm 是 Node.js 的版本管理器 (version manager),可在同一台主機上安裝多個版本的 Node.js 環境,因為不同專案可能會使用不同的 Node.js 版本,那就需要透過一個版本管理器來切換不同的 Node.js 版本。
安裝 NVM
接下來到 NVM 的 GitHub 儲存庫下載,無論你是 Windows、MacOS、Unix 系統都有對應的安裝方式。
Windows
NVM for Windows 有提供安裝工具,下載後照著安裝精靈依序完成即可運作,下載連結。

請選擇
nvm-setup下載並安裝
下載後依循著安裝精靈即可完成。

完成後,打開「命令提示字元」可以試著輸入 nvm,如果看到類似以下畫面就算是完成了。
MacOS
MacOS 則是使用指令進行安裝,打開「終端機」或自行安裝的「iTerm」等工具,輸入以下指令即可開始安裝,(更多版本連結)。
| |
安裝後預期會顯示以下片段及算安裝完成,而此時如果你有安裝其它指令工具,有可能會發生輸入 nvm 無法呼叫的狀況(例如:zsh: command not found: nvm)。

接下來可以在你所使用的命令設定檔案加入以下片段程式碼,以下提供 bash、zsh 的說明,兩者依據環境選擇其一即可:
- bash(預設)
- zsh
bash
預設的情況下,MacOS 中可能沒有任何一個指令設定檔案,此時可以使用 touch ~/.bash_profile 新增一個文字檔案在根目錄上,接下來回到資料根目錄可以找到 .bash_profile,沒看到的話代表未開啟隱藏檔案顯示,可以按下 Command + Shift+ . 顯示。

接下來使用任何文字編輯器打開該檔案,並加入以下程式碼存檔即可。
| |
zsh
可以打開 .zshrc 加入以下片段後重啟(注意:.zshrc 通常在使用者根目錄下並且為隱藏檔,找到後使用任何文字編輯器打開編輯)。
| |
設定完成以後,按下 nvm 就會跳出如下圖就算完成了。

注意:
- 使用
nvm時,不需要sudo即可使用npm -g全域安裝模組,所以與其執行sudo npm i -g,不如執行npm i -g- 若你有
~/.npmrc,請確保裡面不包含任何prefix的設定 (因為與nvm不相容)- 你可以 (但不應該) 保留以前在 “系統” 安裝的 Node.js,但
nvm只對你的使用者帳戶 (用於安裝nvm的使用者帳戶) 可用。可能會導致版本不 match,因為其他使用者會使用/usr/local/lib/node_modules/*,而使用者帳戶會使用~/.nvm/versions/node/vX.X.X/lib/node_modules/*
常用的 NVM 指令
直接輸入 nvm 及可以看到所有的指令列表,在此僅列出最常見的幾個指令(基本上常用的只有兩三個,剩下幾個只要認識即可)
version:確認 NVM 是否安裝成功 (alias:v)
Usage:
| |
查看 NVM 的版本
| |
install:利用 NVM 安裝 Node.js
Usage:
| |
安裝 NVM 後,其實還沒安裝 Node 環境:
| |
如果執行下面指令,會提醒你需要執行 install 指令才能安裝 Node.js:
| |
安裝最新版的 Node.js:
| |
如果要指定安裝版本,可以直接指定版本號
| |
安裝的第一個版本的 Node.js 會成為 nvm 的預設版本,新的 shell 就會以預設版本的 Node.js 來使用 (例如:nvm alias default)。
查看目前安裝 Node.js 的版本:
| |
uninstall:利用 NVM 解除安裝指定的 Node.js 版本
Usage:
| |
list:查看可用的安裝版本 (alias:ls)
Usage:
| |
nvm list:查看已安裝的版本nvm list installed:查看已安裝的版本nvm list available:查看遠端可安裝的版本
查看目前 Node.js 有哪些可用版本可安裝
| |
通常會選擇安裝
LTS(Long-term support,長期支援) 版
查看目前已安裝的版本
| |
use:切換 Node.js 版本
Usage:
| |
如果要使用 nvm 切換正在使用的 Node.js 版本,可用 use 指令
| |
如果切換的目標版本還沒安裝,nvm 會提醒你要安裝:
| |
透過 nvm 安裝 Node.js 時,nvm 會將不同的 Node.js 版本儲存在 ~/.nvm/versions/node/vX.X.X,然後再修改 $PATH,將指定版本的 Node.js 路徑加入:
| |
在
nvm的各個 Node.js 版本安裝的全域套件都會在各自版本的目錄內安裝,所以在切換至新安裝的 Node.js 版本後需要重新安裝,也因為如此,不同版本間的套件就不會有衝突問題。
current:查看目前使用的版本
Usage:
| |
如果忘記自己切換到哪個版本,可以用 current 指令
| |
run:直接執行 Node.js (NVM 1.1.9版已拔除)
run:直接執行 Node.js (NVM 1.1.9版已拔除)如果要直接執行 Node.js,可以使用下面指令
| |
exec:指定要執行的 Node.js 版本 (NVM 1.1.9版已拔除)
exec:指定要執行的 Node.js 版本 (NVM 1.1.9版已拔除) | |
which:察看 Node.js 的安裝路徑 (NVM 1.1.9版已拔除)
which:察看 Node.js 的安裝路徑 (NVM 1.1.9版已拔除)執行下面指令可以查看特定版本的 Node.js 的安裝路徑
| |
alias:查看別名、設定別名
Usage:
| |
如下圖有些版本的文字是紅色或是顯示 N/A,就代表該版本未在電腦安裝

預設 alias 可以取代版本號
node:安裝最新版的 Node.jsiojs:安裝最新版的 io.jsstable:此 alias 已棄用,僅適用於 v0.12 以及更舊版,目前改為 node aliasunstable:此 alias 為 v0.11,最後一個 “unstable” (不穩定) Node release,在 v1.0 之後的版本都是穩定版 (in SemVer, versions communicate breakage, not stability)
可在下面這些指令使用以上預設別名:
nvm installnvm usenvm runnvm execnvm which- … 等
設定別名
| |
接著用 nvm alias 指令就會看到剛剛新增的別名所對應的 Node.js 版本
| |
常見錯誤原因
報錯 exit status 1(或 exit status 5) 問題
出現 exit status 1 存取被拒 或 exit status 5 存取被拒,需要用管理員身分打開 cmd 命令列工具,再執行 nvm use <version> 即可。
報錯 exit status 145 問題
這個問題可以在 github nvm-windows 下找到答案,nvm 安裝的時候有兩個安裝目錄,一個是 nvm 安裝目錄,一個是 nodejs 安裝目錄,這兩個安裝目錄名不能出現空格或中文,但是 nodejs 默認安裝目錄是 C:\Program Files\nodejs,這個目錄中間有空格,需要我們自定義一個安裝目錄,即可解決這個問題。
BONUS:永遠以系統管理者身份執行
每次都要使用「以系統管理者身份執行」來開啟終端機是真的滿麻煩的,所以你其實可以針對應用程式永遠「以系統管理者身份執行」,首先點你要永遠執行的程式右鍵選內容

點選下方進階

將「以系統管理員身份執行」打勾

搞定,之後使用捷徑打開 cmd 時,皆為「以系統管理員身份執行」
總結
nvm 指令整理
| 指令 | 功能 |
|---|---|
nvm versionnvm v | 查看 nvm 版本 |
nvm install <version> | 安裝指定 <version> 版本的 Node.js(建議安裝 LTS 版本) |
nvm lsnvm ls installed | 查看目前已安裝的 Node.js 版本 |
nvm ls available | 查看目前可安裝的 Node.js 版本 |
nvm use <version> | 切換指定 <version> 版本的 Node.js |
nvm current | 查看當前使用的 Node.js 版本 |
