npm install で node-gyp エラーが発生したときの解決方法


npm でインストールしていた iconv のバージョンを update しようとしたら npm ERR! iconv@2.3.1 install: `node-gyp rebuild` というエラーメッセージが表示されて、インストールできませんでした。

何度もこのエラーと戦ってきたので、解決方法をまとめてみました。

npm

npm install でエラー

$ npm install
...
npm ERR! Darwin 17.7.0
npm ERR! argv "/Users/username/.nvm/versions/v6.11.0/bin/node" "/Users/username/works/myapp/node_modules/.bin/npm" "install"
npm ERR! node v6.11.0
npm ERR! npm  v3.9.2
npm ERR! code ELIFECYCLE
 
npm ERR! iconv@2.3.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the iconv@2.3.1 install script 'node-gyp rebuild'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the iconv package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs iconv
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls iconv
npm ERR! There is likely additional logging output above.
 
npm ERR! Please include the following file with any support request:
npm ERR!     /Users/username/works/myapp/npm-debug.log

node-gyp rebuild しても、これでは解決できませんでした。

(解決方法 1) npm cache clean

npm cache clean
npm install

npm install 後に iconv がインストールされたことを確認して作業完了です。

$ npm ls | grep iconv@        
├─┬ iconv@2.3.1

(解決方法 2) common.gypi の MACOSX_DEPLOYMENT_TARGET 変更

(背景) macOS アップグレード

今回は macOS Mojave へアップグレード後に発生しました。

common.gypi ファイルの場所を確認

まず、エラーが出ていたときに利用していた Node.js バージョンの common.gypi ファイルの場所を探します。

$ find ~/.node-gyp -name common.gypi
 
/Users/yourname/.node-gyp/6.11.1/include/node/common.gypi

注意点

/Users/yourname/.nvm/versions/v6.11.0/include/node/common.gypi とありますが、こちらではないです。お間違えなく。

MACOSX_DEPLOYMENT_TARGET の置換

COMMON_GYPI_PATH=/Users/yourname/.node-gyp/6.11.1/include/node/common.gypi
$ grep MACOSX_DEPLOYMENT_TARGET $COMMON_GYPI_PATH
 
          'MACOSX_DEPLOYMENT_TARGET': '10.7',       # -mmacosx-version-min=10.7
 
$ grep 10.7 $COMMON_GYPI_PATH
 
          'MACOSX_DEPLOYMENT_TARGET': '10.7',       # -mmacosx-version-min=10.7
TMPFILE="$(mktemp /tmp/XXXXXX)"
 
# replace 10.7 with 10.9
sed -e "s/10\.7/10\.9/g" $COMMON_GYPI_PATH > $TMPFILE
 
mv $TMPFILE $COMMON_GYPI_PATH

以上、node-gyp エラーを定期的に解決してる現場からお送りしました。

参考情報

  1. コメントはまだありません。

  1. トラックバックはまだありません。