npmのpeerDependencies requirementsエラーの直し方


npmで毎回ハマっている気がするのでメモです。

Node_js

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のあまり知られてない機能 10選

それでは快適なnpm生活をお送りください。(これで問題解決しなかったらごめんなさい!)