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