npm installで依存関係が満たされていないと表示されるのはなぜですか?


404

ノードパッケージがあります。npm installパッケージルートから実行すると、たくさんのものがインストールされますが、次のようなエラーメッセージがいくつか出力されます。

npm WARNアンメットの依存関係/ Users / seanmackesey / google_drive / code / explore / generator / node_modules / findup-sync / node_modules / globにはgraceful-fs@'~1.2.0 'が必要ですが、ロードされます

私は正確に何をしているのか混乱してnpm installいます。依存関係を検出した場合、インストールしないでください。どのような条件下で、このようなエラーメッセージが表示されますか?また、依存関係をどのように解決できますか?

回答:


397

依存関係の解決が少し壊れているためだと思います。https://github.com/npm/npm/issues/1341#issuecomment-20634338を参照してください

以下は可能な解決策です:

  1. 満たされていない依存関係を含む最上位モジュールを手動でインストールする必要があります。 npm install findup-sync@0.1.2

  2. package.jsonを再構成します。すべての上位モジュール(他のモジュールの依存関係として機能)を下部に配置します。

  3. npm installコマンドを再実行してください。

この問題は、タイムアウトなどによりnpmがすべてのパッケージをダウンロードできなかったことが原因である可能性があります。

注:を使用して、失敗したパッケージを手動でインストールすることもできますnpm install findup-sync@0.1.2

を実行する前にnpm install、次の手順を実行すると役立つ場合があります。

  • 使用してnode_modulesを削除します rm -rf node_modules/
  • 走る npm cache clean

なぜ「node_modules」を削除する必要があるのですか?ネストされたモジュールのインストール中npm installにが失敗した場合、後続のnpm installは、欠落しているネストされた依存関係を検出しません。

その場合は、欠落しているネストされたモジュールのトップレベルの依存関係を削除して、npm install再度実行するだけで十分な場合があります。見る


22
ノードモジュールを削除してキャッシュを消去すると、私にとってはうまくいきました。
MarkoHiel 14

4
「node_modules」を削除し、「npm cache clean」を実行してから「npm install」を実行すると、問題が解決しました。エラーなしですべての依存関係が読み込まれるまで、「npm_install」を3回実行する必要がありました。
hendrix 2014

2
npm cache cleanアクセス上の理由で機能しない場合は、を試してくださいsudo npm cache clean
Soroush 2015

12
@Soroushが盲目的に、正しく機能しないものにsudoを追加するだけでは魔法のように修正されません。つまり、何が起こっているのか分からないということです。
Edgar Aroutiounian 2016

5
npmの他の「ソリューション」にrm r node_modulesが含まれるのはなぜですか?ほとんどの場合、これが本当に唯一の選択肢であるのはなぜですか?それは非常に私は理解どのようにパッケージマネージャは次のように動作するはずないです
phil294

83

WIFIが中にダウンしたとき、それは私に起こりましたnpm install。削除node_modulesして再実行するとnpm install修正されました。


26
してみてくださいnpm cache clean
ijse 2014年

5
おそらくノードを再インストールする必要はありませんが、それを実行してからnpm cache cleanを削除するまでの間にnode_modules、このアドバイスが役に立ちました。
RichLitt、2014年

@RichLitt、ええnpm cache clean、私にとっては十分ではありませんnode_modulesでした。「インストール」中にネットワークに障害が発生した後、それを機能させるためにも削除する必要がありました。
マークトムリン2014年

node_modules削除するディレクトリについて混乱していますか?私はエラーに関して同様の問題を抱えています/usr/local/lib/node_modules/npm/node_modules/read-installed/node_modules/readdir-scoped-modules requires graceful-fs@'^4.1.2'
wuliwong

1
@wuliwongトップレベルのもの。
geon 2016

33

これらのコマンドラインを使用して問題を修正しました

  • $ rm -rf node_modules/
  • $ sudo npm update -g npm
  • $ npm install

終わった!


5
sudo npm update -g npmを実行した後、npmが役に立たなくなったため、何かをインストールしようとすると「npm ERR!モジュール 'read-package-json'が見つかりません」という結果に反対票を投じる必要があります
MichaelB

それは私にとっても他の人々にとってもうまくいきました、多分あなたは他の問題を抱えています。モジュールread-package-jsonをグローバルにsudo npm install -g read-package-jsonインストールするか、npmを再インストールしてください
zatamine

8
注意:sudoをnpmで使用しないでください。代わりに、npmが書き込みたいディレクトリの権限または所有権を変更することをお勧めします。
Sgnl 2016

1
そこにも "npm cache clean"を追加したいかもしれません
Alexander Mills

1
sudonpmと一緒に使用しないでください
付与

11

NPMを最新バージョンにアップグレードすると、これに大きく役立ちます。上記のduleの答えは、依存関係管理が少し壊れていると言うのは正しいですが、これは主に古いバージョンのnpmの場合のようです。

このコマンドnpm listは、インストールされてnode_modulesいるすべてのリストを表示します。バージョン1.4.2からバージョン2.7.4にアップグレードすると、以前はフラグが付けられてWARN unmet dependencyいた多くのモジュールがそのように示されなくなりました。

npmを更新するにはnpm install -g npm、MacOSXまたはLinuxで入力する必要があります。Windowsでは、nodejsインストーラーを再ダウンロードして再実行することが、npmを更新するためのより効果的な方法であることがわかりました。


CentOS 7リポジトリで配布されたnpmバージョンで同じ問題が発生しました。node.jsから最新のnpmバージョンをインストールしましたが、問題は解消されたので、古いバージョンの問題である可能性があります。
Elouan Keryell-Even 2016

9

上記の回答は、node_modulesディレクトリを削除した後でも完全には役に立ちませんでした。

以下のコマンドは最終的に私を助けました:

npm config set registry http://registry.npmjs.org/

これは、安全でないHTTP接続を介してノードモジュールをプルすることに注意してください。

Src:https : //stackoverflow.com/a/13119867/4082503


これは私と私のホストがトラフィックをリダイレクトするのに役立ちました。
dimiguel 2014

1
@dimgl知ってよかった:)
Vinay Vemula 2014

1
@Dejelは他の回答も試してみました。npm install複数回実行したり、一部のノードパッケージを1つずつ手動でインストールしたりする必要がある場合があります。
Vinay Vemula 2014

4

すべてのために-- UNMET PEER DEPENDENCY、元のために。-- UNMET PEER DEPENDENCY rxjs@5.0.0-rc.2npm install --save rxjs@5.0.0-rc.2それがなくなるまで、その依存関係をインストールしますUNMET DEPENDENCIES

幸運を。


1
新しいものを含め、同じエラーが発生した葉を私に:ERR! code 1
はWouter Vanherck

1
@WouterVanherckあなたは試してみてくださいすることができrm -rf node_modules、その後、npm cache cleannpm install。それはまだ仕事がない場合、私は再びあなたを示唆rm -rf node_modulesし、npm i -g yarnその後、yarn installは管理するのにかなり良いnode_modulesです。幸運を。
Akash

1
はい、何のpeerDependenciesためですか。バージョンの意識的な選択にあなたをプッシュします。
カマフェザー

3

npm listUNMET DEPENDENCYとしてリストされているすべてのパッケージを実行してインストールしました

例えば:

├── UNMET DEPENDENCY css-loader@^0.23.1
npm install css-loader@^0.23.1


2

これは私のためにそれを解決しました:

  1. package.jsonエラーに従って、のバージョン番号を修正してください。
  2. 削除node_modulesrm -rf node_modules);
  3. 再実行npm install

エラーがなくなるまで、これらの手順を繰り返します。


1

同様に、もう1つステップを追加します。

npmバージョン> 1.4.9では、「npm install」はdevDependenciesをインストールすることに注意してください。まず、既存のモジュールとキャッシュを削除してみます。

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

次に試してください:

npm install --dev
npm update --dev

これは少なくとも再帰的な依存関係の解決を解決します。


6
--devフラグとは何ですか?
Alexander Mills 2015年

1

--dev devDependenciesを再帰的にインストールします(そしてその実行を永久に実行します...)バージョンの違いを解決するのにどのように役立ちますか?

node_modulsフォルダーを削除してから、npmキャッシュを消去してから、「npm i」を再度実行してみてください。


1

React Native CLIのインストール中にも同様の問題が発生しました。/node_modulesここで回答を読んだ後、どのディレクトリを削除するべきかわからなかった。私は結局走った

npm update -g

その後、パッケージをインストールすることができました。


1

私はが実行される自動展開システムで作業しようとしていたnpm installため、これらのソリューションの多くは自動化された状態では機能しません。私は削除/再作成する立場になく、node_modules/Node.jsのバージョンを簡単に変更することもできませんでした。

だから私は実行してしまいましたnpm shrinkwrap- npm-shrinkwrap.jsonファイルを私の展開バンドルに追加し、そこからインストールを実行しました。これで問題が解決しました。シュリンクラップファイルを「ヘルパー」として使用すると、npmは適切なパッケージを見つけてインストールすることができたようです。(シュリンクラップには他の機能もありますが、この特定のケースではこれが必要でした)。


1

反応パッケージをインストールしているときにこの問題が発生し、これは私にとってはうまくいきました: npm install --save <package causing this error>



1

npm installからすべてのパッケージがインストールされますが、前者で事前設定されていない場合、のnpm-shrinkwrap.jsonパッケージは無視される可能性がありますpackage.json

プロジェクトにがある場合は、add / remove / changeを追加するたびに、npm-shrinkwrap.json必ず実行npm shrinkwrapして再生成してくださいpackage.json



0

4.0.0への更新

Angularの依存関係を最新バージョンに更新し、アニメーションが必要かどうかを再確認するのと同じくらい簡単に4に更新できます。これはほとんどのユースケースで機能します。

Linux / Macの場合:

npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest typescript@latest --save 

Windowsの場合:

npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest typescript@latest --save

次に、通常使用するng serveまたはnpm startコマンドを実行すると、すべてが機能するはずです。

アニメーションに依存している場合は、新しいBrowserAnimationsModule@angular/platform-browser/animationsルートにインポートしますNgModule。これがないと、コードはコンパイルされて実行されますが、アニメーションはエラーをトリガーします。からのインポート@angular/coreは廃止されました。新しいパッケージからのインポートを使用してください

import { trigger, state, style, transition, animate } from '@angular/animations';.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.