💻

nvmでNode.jsのバージョンを切り替えられない問題の解決方法

2024/10/10に公開

Node.jsのバージョン管理ツール「nvm」を利用している際に、期待通りにバージョンが切り替わらなかった時のメモです

環境

  • マシン: Apple M1Mac
  • OS: macOS Ventura 13.1

事象

以下の手順でNode.jsのバージョンを切り替えようとしましたが、意図したバージョンに切り替わりませんでした。

  1. nvm use {target version} を実行
  2. node --version で確認すると、切り替わっていない

解決策

私の場合、この問題は、HomebrewによってインストールされたNode.jsが優先されていることが原因でした。

以下の手順でHomebrew経由のNode.jsを削除し、nvmによるバージョン管理を有効にします。

# 現在のnodeのパスを確認which node
/opt/homebrew/bin/node

# nodeのシンボリックリンクを詳細表示
› ll /opt/homebrew/bin/node
lrwxr-xr-x hoge admin 30B Fri Aug 16 00:37:40 2024 /opt/homebrew/bin/node → ../Cellar/node/22.6.0/bin/node

# Homebrew経由のnodeを削除rm /opt/homebrew/bin/node

# 再度nodeのパスを確認
› ll /opt/homebrew/bin/node
ls: /opt/homebrew/bin/node: No such file or directory (os error 2).

# nvmで再度バージョンを切り替え
› nvm use {target version}

# バージョン確認node --version
v{target version}

原因

この問題の原因は、HomebrewによってインストールされたNode.jsがパスの優先順位でnvmよりも先に位置していたためでした。

/opt/homebrew/bin は一般的にPATH環境変数の先頭に配置されるため、システムはまずHomebrew経由のNode.jsを参照します。これにより、nvmによるバージョン管理が正しく機能しなくなっていました。

参考

Discussion