普段案件でNode v10.12.0(古い上にLTSでもない)を使っているのですが、別件で最新版を使う必要がありv18.15.0にアップデート。
その結果、元のバージョンに戻せなくなり行き詰まったためその解決策を記録します。
結論から言うとなんてことのない、
nodenvで管理していたことを忘れnodebrewで最新版をインストールしていたから
でした。
Nodeバージョン確認の流れ
まず現在のnodeバージョンとインストール済みのバージョンを確認
現在
$ node -v
v18.15.0
インストール済み
$ nodebrew ls
v18.15.0
v16.20.0 (←いつインストールしたのかわからない)
使いたいバージョンが出てこない…
仕方なくもう一度インストールを試みる。
$ nodebrew install-binary v10.12.0
v10.12.0is not found
Can not fetch: https://nodejs.org/dist/v12.16.3/node-v12.16.3-darwin-arm64.tar.gz
v10.12.0が見つからないとのこと。
そういえばM1 Macで古いnodeをインストールできなかったからそのせい?
M1 Macで古いNode.jsをインストール
以前v10.12.0のインストールが上手く行かなかったとき、こちらの記事を参考にインストールしました。*1
$ arch -x86_64 nodenv install 10.12.0
nodenv: /Users/01049128/.nodenv/versions/10.12.0 already exists
やはりすでに存在している…とここでようやく気づきました。
nodenv
nodenvで管理していたんだった。
nodebrewを削除
Nodeを何で管理しているのかコマンドで確認し、nodebrewはもう使用しないためアンインストール。
nodebrewを見ていることを確認
$ which node
/Users/~~~/.nodebrew/shims/node
nodebrewをアンインストール
$ brew uninstall nodebrew
もうnodebrew使用しないので、PCからnodebrew本体を削除。
ホームディレクトリ(/Users/myName)からcommand + shift + .
で隠しコマンドを表示。
.nodebrewフォルダを見つけ(画像は削除後のため無し)、フォルダごと削除。
これでもう二度とnodebrewは使いません。
nodenvよ、再び
無事nodebrewを削除し、nodenvのパスを通します。*2
zshの場合
$ echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(nodenv init -)"' >> ~/.zshrc
シェルを再起動
$ exec $SHELL -l
パスを通したら、もう一度向き先を確認してnodenvに向いていることを確認し、使いたいバージョンを指定。
向き先確認
$ which node
/Users/~~~/.nodenv/shims/node
インストール済みのバージョン確認
$ nodenv versions
system
* 10.12.0 (set by /Users/~~~/.node-version)
14.18.3
16.14.2
今回はすでに使いたいバージョンを指定していましたが、違うバージョンを指定してた場合は以下コマンドで対応。
グローバルで使うnodeのバージョンを指定
$ nodenv global 10.12.0
あるプロジェクトのディレクトリでのみ使うnodeのバージョンを指定
$ nodenv local 10.12.0
リハッシュして適用
$ nodenv rehash
最後にnodeのバージョンを確認し、使いたいバージョンを表示したら無事切り替え完了です。
$ node -v
v10.12.0
以上でなんとかNodeのバージョンを切り替えることができました。
引用
*1 M1 Mac で nodenv から Intel 版 Node.js をインストール
*2 nodenvの環境構築