Node.jsで作成したプロジェクトを久しぶりにリポジトリからクローンして作業しようとしたら、npm installする際にエラーが発生してハマったので解決方法メモしておこうと思います。
同じ現象でハマっている人がいたら参考にして下さい。
どのようなエラーが発生?
ハマったエラーはこちら。npm installを実行すると、
$ npm install npm ERR! Failed at the contextify@0.1.15 install script 'node-gyp rebuild'.
インストールするパッケージを指定しているpackage.jsonの中のどれかのパッケージがnode-gypを呼び出していて、そこでエラーが発生している様子。
Mac環境なのでXcodeのバージョン・Command line toolの更新、nodeバージョンの変更など、色々試してもエラーが解消されなかったため、どのパッケージがエラーを吐いているのかを特定することに。
パッケージを特定する方法
エラーログを見てもどのパッケージがエラーを吐いているか特定できなかったので、package.jsonを編集してどのパッケージがエラーを吐いているかを特定することにしました。
方法はいたって単純、
- オリジナルのpackage.jsonをコピーして退避
- package.jsonに記述されているパッケージの内、1/2程度を残して残りを削除
- npm installでエラーが出るかを確認
- エラーが出れば、さらに半分だけ残して絞り込んでいく。エラーが出なければ、2.で削除したパッケージ指定をいくつか復活させてエラーが出るか確認
特定したら最新パッケージに更新
絞り込んで特定したパッケージはかなり古いバージョンが指定されていました。
OSやNode.jsのアップデート等で互換性がなくなりエラーが発生しているので、特定したパッケージをアップデートすることで解決しました。
package.jsonから特定したパッケージ指定のみを削除して、
$ npm install "対象パッケージ名" --save $ npm install
原因特定にハマって時間を浪費してしまっている場合は参考にしてみて下さい。