今日の朝にシェルを使っていつものようにnpm run buildをしようとしたところ
zsh:command not found npmというエラーが発生しnpmのコマンドが打てなくなりました。
cordovaコマンド(cordova prepare ios)も試してみたけどこちらもzsh:command not found npm
で入力失敗。昨日までは打てたのに・・・。
調べてみるとどうやらシェルのバージョンの食い違いが原因でエラーが起きていることが分かりました。
mojaveまではデフォルトシェルがbashだったのですが、catalinaからはzshがデフォルトに
変わるみたいです。当然パスも変わるので今までのbashのパスでzshシェルを
通そうとするとパスが違うということでnot foundとなってしまうみたいですね。
macOSをmojaveからcatalinaに更新して数日経っていたのでその更新のタイミングが
偶々今日の朝だったという訳ですね。
こちらの対処法につきましては、homebrewをインストール後nodebrewをインストールして
適当なバージョンのnodeを入れるだけ。具体的な手順は以下の通りです。
↓シェルにて入力
//最初に以下のscriptを入力
①/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
//Homebrewを使ってnodebrewをインストール
②brew install nodebrew
nodebrew -vでインストールされているか確認してみてください。
//以下を実行するとインストール可能なnodeのバージョンが一挙表示されるので
この中から適当なバージョンを選びます。確認できたら④番でインストール開始
③nodebrew ls-remote
//例としてv11.13.0をインストール
④nodebrew install-binary v11.13.0
もしくはnodebrew install-binary stable
⑤nodebrew lsでバージョンを確認。選んでバージョンが表示されればnodeインストール成功。
バージョンの下にcurrent: noneと表示されるのでnodebrew use v11.13.0で
使えるようにする。
⑥今回のエラーで最も関連性が高い箇所。zshのパスを通します。
cataklinaはzshが標準なので以下のように~/.zprofileでパスをつなぎます。
echo ‘export PATH=$HOME/.nodebrew/current/bin:$PATH’ >> ~/.zprofile
今まではbashにパスを通していました。
//これは通用しない
echo ‘export PATH=$HOME/.nodebrew/current/bin:$PATH’ >> ~/.bash_profile
⑦ターミナルを再起動。その後node -vでバージョンが確認。確認してnpm run buildが
作動すれば晴れてインストール成功になります。
実際はパスが違っていただけなので難しい手順は必要なくすんなり動きましたね。
osを更新して突然npmが動かなくなった場合は上記の手順で再インストールしてみてください。