Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境,可以讓 JavaScript 在伺服器端運行,並且可以使用 NPM 等 Package Manager 來安裝第三方套件。現代的網頁前端開發也離不開使用 node.js 的 package,例如透過 Vite 建立本地開發伺服器與打包專案。
Node.js 的版本更新速度很快,因此我們需要一個工具來管理 Node.js 的版本,避免不同專案需要使用不同版本的 Node.js 時造成問題。
本文版本現況(2026-08 更新)
- 安裝腳本已更新為 nvm
v0.40.7。- Node.js 目前的 Active LTS 是 24.x(Krypton),22.x(Jod)已進入 Maintenance LTS。 新專案請裝 24.x —— 下方步驟裡的
22.11.0請自行換成24.19.0(或你要的版本), 指令本身完全相同。截圖是撰文當時錄的,畫面上仍顯示 22.11.0。- 只裝 Node 一種執行環境的話,現在有比 nvm 更快的選擇 —— 見文末的選型建議。
以 Ubuntu 安裝 NVM
- 參考官方文件:🔗 nvm - GitHub
- 下載 install script
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.7/install.sh | bash

- 設定環境變數
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
- 查看最新的 Node.js LTS 版本
nvm ls-remote

- 安裝最新的 Node.js LTS 版本
nvm install 22.11.0

系統會自動將這個版本設定為預設
- 確認 node, npm 的版本
node -v
npm -v

以 Windows 安裝 NVM
- 開啟 PowerShell 並執行以下指令
winget search nvm

我們要的是
CoreyButler.NVMforWindows
- 下載並安裝 NVM
winget install CoreyButler.NVMforWindows


- 看到
Successfully installed後,重新開啟終端機並執行以下指令
nvm -v
有出現版本號表示安裝成功
- 安裝最新的 Node.js LTS 版本
nvm install lts
這邊顯示我們安裝的版本是 22.11.0,我們指定它為預設版本
- 啟用指定的版本
nvm use 22.11.0

- 完成後,可以檢查 node 跟 npm 的版本
node -v
npm -v

以 MacOS 安裝 NVM
- 開啟終端機並執行以下指令
brew install nvm
- 建立 nvm 的目錄
mkdir ~/.nvm
- 設定環境變數
nano ~/.zshrc
在檔案最後加入以下內容
export NVM_DIR="$HOME/.nvm"
export NVM_HOME="/opt/homebrew/opt/nvm"
[ -s "$NVM_HOME/nvm.sh" ] && \. "$NVM_HOME/nvm.sh"

按下 Ctrl + O 儲存後按下 Enter,再按下 Ctrl + X 退出
- 重新載入設定
source ~/.zshrc
- 確認 nvm 是否安裝成功
nvm -v
有出現版本號表示安裝成功
- 查看最新的 Node.js LTS 版本
nvm ls-remote

- 安裝最新的 Node.js LTS 版本
nvm install 22.12.0
系統會自動將這個版本設定為預設
- 確認 node, npm 的版本
node -v
npm -v

常用指令列表
nvm ls:列出所有已安裝的 Node.js 版本nvm ls-remote:列出所有可安裝的 Node.js 版本nvm install <version>:安裝指定的 Node.js 版本nvm use <version>:啟用指定的 Node.js 版本nvm alias default <version>:設定預設的 Node.js 版本nvm uninstall <version>:移除指定的 Node.js 版本node -v:查看目前使用的 Node.js 版本
不一定要用 NVM
nvm 是最多教學引用的那一個,但它是 shell script 實作,每開一個 shell 都要付一次載入成本。 只裝 Node 的話,現在有更快的選擇。
| 工具 | 實作 | 適合什麼情況 |
|---|---|---|
| nvm | shell script | 教學與文件最多;團隊已經在用就沿用,沒必要為了換而換 |
| fnm | Rust | nvm 的直接替代品,快很多,而且原生支援 Windows(nvm 本身不支援,Windows 上那個是另一個同名專案)。讀同樣的 .nvmrc |
| Volta | Rust | 把版本釘在 package.json 裡,整個團隊自動落在同一版。適合「不想靠人記得切版本」的專案 |
| mise | Rust | 一次管多種語言執行環境,另外還管環境變數與任務。專案不只有 Node 時才划算 |
選的時候只有兩個問題要回答:
- 你只管 Node,還是管很多種執行環境? 只有 Node →
fnm或Volta;多種 →mise。 - 版本要由人切,還是由專案決定? 由人切 →
fnm;由專案決定 →Volta(釘在package.json) 或在 repo 放.nvmrc配合fnm的自動切換。
從 nvm 換過去的成本很低:fnm 與 mise 都讀 .nvmrc,既有專案不用改檔案。
所以如果你現在正因為 shell 啟動變慢而困擾,這個遷移大概是投報率最高的一個。
反過來說——如果 nvm 現在沒有造成你任何問題,那就不用換。版本管理工具是基礎設施, 基礎設施換掉的收益必須大於整個團隊重新學一次的成本,而「比較快」通常不夠。