Help us understand the problem. What is going on with this article?

nvmでdefaultバージョンを設定してもsystemのnodeが使用されてしまう

More than 1 year has passed since last update.

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を変更していることが原因の場合もあるとの指摘もあったので、この記事の方法で解決できない場合はそちらも確認してみると良いかもしれない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away