LoginSignup
5

posted at

updated at

zsh: command not found: npmが出た時の対処法

ある日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時同様、stablelatestで指定することも可能です。

$ 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で確認した時のcurrentnoneになっていたこと、インストールしていたはずのバージョンがなくなっていたことが原因でした。
数日前まで問題なくnpmコマンドが打てていたのに、ある日突然といった形です。
なぜ突然noneになったのかというところは判明しませんでした。
エラー文で検索すると同じエラーがmacのアップデートによって発生したと記載がありますので、そちらの可能性が高いと思っています。

pathを通せば解決する?

エラー文で検索するとpath関係が原因だと書いてあるサイトがたくさん出てきました。
私の場合はpathは関係なくnodeをインストールし直す形で解決しましたが、もしこの記事の方法で解決できなければpathを疑ってみるのもありかなと思います。

参考にしたサイト

https://qiita.com/sinmetal/items/154e81823f386279b33c
https://github.com/hokaccha/nodebrew

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5