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 install
nvm use
nvm run
nvm exec
nvm 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 version nvm v | 查看 nvm 版本 |
nvm install <version> | 安裝指定 <version> 版本的 Node.js(建議安裝 LTS 版本) |
nvm ls nvm ls installed | 查看目前已安裝的 Node.js 版本 |
nvm ls available | 查看目前可安裝的 Node.js 版本 |
nvm use <version> | 切換指定 <version> 版本的 Node.js |
nvm current | 查看當前使用的 Node.js 版本 |