Skip to content

nvm切換node版本

基本用法

NVM 提供了簡單而強大的命令來切換不同的 Node.js 版本。最基本的命令是 nvm use,它允許你激活已安裝的 Node.js 版本。

查看可切換的node版本

使用前可以使用 nvm ls 命令查看已安裝的 Node.js 版本。

bash
nvm ls

nvm ls

切換版本的不同方式

使用完整版本號

你可以指定完整的版本號:

例如,要使用 Node.js v24.0.2:

bash
$ nvm use 24.0.2
Now using node v24.0.2 (64-bit)

nvm ls

使用主版本號

只需指定主版本號,NVM 將使用該主版本的最新已安裝版本:

bash
$ nvm use 14
Using node v14.17.6 (npm v6.14.15)

使用別名

NVM 內置了幾個特殊別名:

bash
# 使用最新穩定版
$ nvm use node
Now using node v16.14.0 (npm v8.3.1)

# 使用最新 LTS 版本
$ nvm use lts/*
Now using node v16.13.2 (npm v8.1.2)

# 使用特定 LTS 版本
$ nvm use lts/gallium
Now using node v16.13.2 (npm v8.1.2)

指定架構(僅Windows)

在 Windows 系統上,你可以指定使用 32 位或 64 位版本:

bash
$ nvm use 14.17.0 32
$ nvm use 16.14.0 64

使用 .nvmrc 文件自動切換版本

在項目根目錄創建一個名為 .nvmrc 的文件,文件內容為 Node.js 版本號。然後,只需運行 nvm use 命令(無需參數),NVM 將讀取 .nvmrc 文件中的版本並自動切換到該版本。

  1. 創建 .nvmrc 文件:
bash
$ echo "16.14.0" > .nvmrc
  1. 在項目目錄中運行:
bash
$ nvm use
Found '/path/to/project/.nvmrc' with version <16.14.0>
Now using node v16.14.0 (npm v8.3.1)

.nvmrc 文件內容示例:

  • 16.14.0 - 精確版本
  • 16 - 主版本的最新版本
  • lts/* - 最新的 LTS 版本
  • node - 最新的 Node.js 版本

設置默認 Node.js 版本

你可以設置一個默認的 Node.js 版本,每次打開新終端時會自動使用該版本:

bash
$ nvm alias default 16.14.0
default -> 16.14.0 (-> v16.14.0)

這樣,即使你沒有運行 nvm use 命令,也會默認使用指定的版本。

切換版本時的注意事項

全局包管理

切換 Node.js 版本時,全局安裝的包不會自動遷移。每個 Node.js 版本有自己獨立的全局包集合。

如果你希望將一個版本的所有全局包復制到另一個版本,可以使用:

bash
# 從 v14.17.0 復制全局包到 v16.14.0
$ nvm install 16.14.0 --reinstall-packages-from=14.17.0

臨時使用另一版本

如果你只想臨時運行一個命令,而不切換當前會話的 Node.js 版本,可以使用 nvm run

bash
$ nvm run 14.17.0 app.js

查看當前使用的版本

要檢查當前使用的 Node.js 版本:

bash
$ nvm current
v16.14.0

常見問題及解決方案

版本切換後環境變量丟失

問題:切換版本後,之前設置的 NODE_PATH 等環境變量可能失效。 解決方案:在 .bashrc.zshrc 文件中添加環境變量設置。

自動切換版本

如果希望在進入項目目錄時自動切換到 .nvmrc 文件指定的 Node.js 版本,可以在 .bashrc.zshrc 中添加以下內容:

對於 Bash:

bash
cdnvm() {
    command cd "$@" || return $?
    nvm_path="$(nvm_find_up .nvmrc | tr -d '\n')"
    
    if [ -e "$nvm_path/.nvmrc" ]; then
        declare default_version;
        default_version="$(nvm version default)"
        
        declare nvmrc_version;
        nvmrc_version="$(nvm version "$(cat "$nvm_path/.nvmrc")")"
        
        if [ "$nvmrc_version" = "N/A" ]; then
            echo "Warning: $(cat "$nvm_path/.nvmrc") version not installed"
        elif [ "$nvmrc_version" != "$default_version" ]; then
            nvm use > /dev/null
        fi
    fi
}
alias cd='cdnvm'

對於 Zsh:

bash
autoload -U add-zsh-hook
load-nvmrc() {
  local nvmrc_path="$(nvm_find_nvmrc)"

  if [ -n "$nvmrc_path" ]; then
    local nvmrc_node_version=$(nvm version "$(cat "${nvmrc_path}")")

    if [ "$nvmrc_node_version" = "N/A" ]; then
      nvm install
    elif [ "$nvmrc_node_version" != "$(nvm version)" ]; then
      nvm use
    fi
  elif [ -n "$(PWD=$OLDPWD nvm_find_nvmrc)" ] && [ "$(nvm version)" != "$(nvm version default)" ]; then
    echo "Reverting to nvm default version"
    nvm use default
  fi
}
add-zsh-hook chpwd load-nvmrc
load-nvmrc

最佳實踐

  1. 為每個項目創建 .nvmrc 文件:確保團隊成員使用相同版本的 Node.js
  2. 定期更新到 LTS 版本:LTS 版本更穩定,適合生產環境
  3. 使用語義化版本號:在 .nvmrc 文件中指定精確版本,避免兼容性問題
  4. 設置合適的默認版本:為日常開發設置一個默認的 Node.js 版本

nvm use 命令參數說明

參數說明
<版本號>指定要使用的 Node.js 版本
node使用最新版本的 Node.js
lts/*使用最新的長期支持版本
lts/<名稱>使用特定的長期支持版本
<版本號> <架構>(僅Windows) 指定使用 32 或 64 位版本

通過這些方法,你可以輕松地在不同的 Node.js 版本之間切換,滿足不同項目的開發需求。

NVM - Node.js版本管理工具,NVM中文網由www.nvmnode.com整理維護