ある日npmコマンドを打つとエラーが出ました。
$ npm -v
zsh: command not found: npm
npmコマンドが一切使えなくなってしまいました。
解決までに行った方法を共有します。
環境はmacOS Montereyです。
nodebrewがインストール済みか確認する
nodebrew
と打って確認します。
色々と表示されれば問題ないです。一番上の行にバージョンの記載が出ます。
$ nodebrew
nodebrew 1.2.0
Usage:
~~~
nodebrewをインストールする
もしnodebrewが入っていなけばHomebrewを使用してインストールします。
$ brew install nodebrew
Homebrewが入っていなれば下記コマンドでインストールできます。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
ちなみにこちらのコマンドは公式からのコピーですのでご安心ください。
https://brew.sh/index_ja
nodeをインストールして使用するバージョンを指定する
nodeをインストールします。
nodebrew install
でもインストールは可能ですが、install-binary
のほうがインストール時間が短いです。
$ nodebrew install-binary stable
// 補足
stable 最新の安定版
latest 最新版
vXX.XX.X バージョン直接指定
nodeがインストールがされたかをnodebrew ls
で確認します。
$ nodebrew ls
v16.14.2
current: none
currentに表示されるのが現在使用中のバージョンになります。
この場合はcurrentがnoneになっていて、v16.14.2がインストールされていますが使用するように設定されていない状態です。
nodebrew use
で使用するバージョンを指定します。
こちらもinstall時同様、stable
やlatest
で指定することも可能です。
$ nodebrew use v16.14.2
or
$ nodebrew use stable
$ nodebrew use latest
これで完了です。
確認してみます。
$ nodebrew ls
v16.14.2
current: v16.14.2
$ node -v
v16.14.2
指定したバージョンが使用されているのが確認できました。
npmコマンドも打てるようになります。
$ npm -v
8.5.0
原因は何?
nodebrew ls
で確認した時のcurrent
がnone
になっていたこと、インストールしていたはずのバージョンがなくなっていたことが原因でした。
数日前まで問題なくnpmコマンドが打てていたのに、ある日突然といった形です。
なぜ突然noneになったのかというところは判明しませんでした。
エラー文で検索すると同じエラーがmacのアップデートによって発生したと記載がありますので、そちらの可能性が高いと思っています。
pathを通せば解決する?
エラー文で検索するとpath関係が原因だと書いてあるサイトがたくさん出てきました。
私の場合はpathは関係なくnodeをインストールし直す形で解決しましたが、もしこの記事の方法で解決できなければpathを疑ってみるのもありかなと思います。
参考にしたサイト
https://qiita.com/sinmetal/items/154e81823f386279b33c
https://github.com/hokaccha/nodebrew