💻
nvmでNode.jsのバージョンを切り替えられない問題の解決方法
開発環境でよく使用されるNode.jsのバージョン管理ツール「nvm」を利用している際に、期待通りにバージョンが切り替わらなかった時のメモです
環境
- マシン: Apple M1チップ搭載Mac
- OS: macOS Ventura 13.1
事象
以下の手順でNode.jsのバージョンを切り替えようとしましたが、意図したバージョンに切り替わりませんでした。
-
nvm use {target version}
を実行 -
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