npmのpeerDependencies requirementsエラーの直し方
npmで毎回ハマっている気がするのでメモです。
npmを使ってpackage.jsonで利用モジュールの管理をしていると、たまに何もしていないのにnpm installでエラーが発生し始めます。
エラー
エラーはこんな感じ。
npm ERR! Linux 3.14.48-33.39.amzn1.x86_64 npm ERR! argv "/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node0.12.7/bin/node" "/var/jenkins_home/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node0.12.7/bin/npm" "install" npm ERR! node v0.12.7 npm ERR! npm v2.11.3 npm ERR! code EPEERINVALID npm ERR! peerinvalid The package tslint does not satisfy its siblings' peerDependencies requirements! npm ERR! peerinvalid Peer grunt-tslint@2.5.0 wants tslint@>=2.5.0-beta npm ERR! Please include the following file with any support request: npm ERR! /var/jenkins_home/jobs/anime-lineup-packaging/workspace/npm-debug.log
peerDependencies requirementsと言っていて、ここだけみると訳がわからない。
原因
上記のエラーの場合、原因は簡単で、peerDependencies requirementsの1行下にそのまま出ています。
grunt-tslintが2.5.0がtslint 2.5.0-beta以上を要求しているけど、実際はそうなっていないことが問題です。今回はgrunt-tslintでしたが、これはもちろん人によって違うと思います。
解決方法
上記の場合依存moduleであるtslintを2.5.0-beta以上にしてあげれば良いです。つまりpackage.jsonを修正すればOKです。
簡単ですね。簡単なのになぜかハマってしまったという・・・。
簡単に依存性を上げたい
davidというnode moduleを使いましょう。
npm install -g david
david
これでpackage.jsonに書いてあるmoduleたちのversionが古いかどうか調べてくれます。
自動でpackage.jsonを書き換えて最新versionにしたいのであれば
david update
これだけです。
詳しくはこちらの記事のdavidの項目を御覧ください。
それでは快適なnpm生活をお送りください。(これで問題解決しなかったらごめんなさい!)