nvmでnodeのバージョン管理をしたいのだが、nvm alias default v*.*.*
でデフォルトのバージョンを設定しても、新しいターミナルを開くとsystemのnode(brewでインストールしたnode)が使用されてしまう問題が起こった。
nvm ls
を実行するとdefaultではなく、systemを指してしまうのだ。
$ nvm ls
v12.13.1
-> system
default -> lts/* (-> v12.13.1)
node -> stable (-> v12.13.1) (default)
stable -> 12.13 (-> v12.13.1) (default)
実行環境
macOS 10.14.6
nvm 0.35.1(node v12.13.1をインストール済み)
brewでインストールしたnode v13.1.0
原因
もともと、yarnをbrewでインストールした時にnodeが一緒にインストールされてしまい、それがターミナルを開くとnvmでインストールしたnodeより優先されていた。
(ちなみにbrewでyarnを入れた理由は、yarnの公式にnpmでyarnをインストールするのはお勧めしないということが書いてあるため。)
解決方法
調べてみると、ここに解決方法があった。
どうやら、下記コマンドでbrewからyarnをアンインストールせずに、nodeだけをアンインストールできるようだ。
brew uninstall node --ignore-dependencies
上記実行後、新しいターミナルを開くと無事nvmのdefaultのnodeバージョンを使うことができるようになった。
$ node -v
v12.13.1
$ nvm ls
-> v12.13.1
default -> lts/* (-> v12.13.1)
node -> stable (-> v12.13.1) (default)
stable -> 12.13 (-> v12.13.1) (default)
なお、参考ページの別のコメントに、.bash_profile
や.bashrc
などでnvmを読み込んだ後に$PATH
を変更していることが原因の場合もあるとの指摘もあったので、この記事の方法で解決できない場合はそちらも確認してみると良いかもしれない。