npm i がエラーになる
npm は利用しているmac のバージョンを見ていて、npm は該当のpython を呼びに行く 私の場合、最新版のmacOSはなるべく使わないことにしているので、python2 がないと怒られた。
takuya@~$ npm i npm ERR! code 1 npm ERR! gyp verb check python checking for Python executable "python2" in the PATH npm ERR! gyp verb `which` failed Error: not found: python2 (snip) npm ERR! gyp ERR! stack File "<string>", line 1 npm ERR! gyp ERR! stack import sys; print "%s.%s.%s" % sys.version_info[:3]; npm ERR! gyp ERR! stack ^ npm ERR! gyp ERR! stack SyntaxError: invalid syntax
mac brew 環境での npm i の gyp 環境のエラーは、殆どの場合python パスのエラー
対応
python のバージョンを変えてあげる
pyenv local system npm i
または、python2 を作ってあげる
ln -sr /usr/bin/python2.7 /usr/local/bin/python2
npm をどうやって入れたかによる。
再度インストール
rm node_modules/ -rf npm i
node_modules に中途半端なコンパイルが残るので一回消しておくほうが無難。
それでもだめな場合
node のバージョンと、npm のバージョン、そしてパッケージのバージョンを見直す
要は、package.json に記載されたバージョンが古いままで、いまのnodeだとコンパイルが通らないとかある。
たとえば、node-sassの4.0x は最新のnodeだとインストール時にエラーになる。
npm -i # エラー(package.json が4 を指してる) npm -i node-sass@4 # エラー npm -i node-sass@6 # インストールできる
またはその逆で、nodeを古い方にあわせる
brew install node@14 brew unlink node brew link node@14 --force-overwite npm i brew unlink node@14 brew link node