web-dev-qa-db-ja.com

どうしてnpm installは依存関係が満たされていないと言うのですか?

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

npm WARN未解決の依存関係/ユーザー/ seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/globにgraceful-fs@'~1.2.0 'が必要ですがロードされます

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

391
Sean Mackesey

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

考えられる解決策は次のとおりです。

  1. 未解決の依存関係を含むトップレベルモジュールを手動でインストールする必要があります。npm install [email protected]

  2. Package.jsonを再構築してください。すべての高水準モジュール(他のモジュールに対する依存関係として機能する)を一番下に配置します。

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

この問題は、タイムアウトなどの理由でnpmがすべてのパッケージをダウンロードできなかったために発生した可能性があります。

注:npm install [email protected]を使用して、失敗したパッケージを手動でインストールすることもできます。

'npm install'を実行する前に、以下のステップを実行すると役に立ちます。

  • rm -rf node_modules /を使用してnode_modulesを削除します。
  • npm cache cleanを実行します

なぜ 'node_modulesを削除する'必要があるのですか? npmのインストール中にネストされたモジュールがインストールに失敗した場合、それ以降のnpmのインストールでは、見つからないネストされた依存関係は検出されません。

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

387
dule

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

80
geon

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

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

完了しました!

34
zatamine

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

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

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

11
stephen

node_modulesディレクトリを削除した後でも、上記の答えは私を完全に助けてくれませんでした。

以下のコマンドは私をついに助けました:

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

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

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

9
Vinay Vemula

すべての-- UNMET PEER DEPENDENCYに対して、例えばex。 -- UNMET PEER DEPENDENCY [email protected]npm install --save [email protected]がなくなるまで、UNMET DEPENDENCIESを使ってその依存関係をインストールします。

がんばろう。

3
Akash

これで解決しました:

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

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

2
user1585939

--dev devDependenciesを再帰的に(そして永遠に実行されるように)インストールすることで、バージョンの違いを解決するのにどのように役立つか?

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

1
arielhad

反応パッケージをインストールしていたときにこの問題に遭遇し、これは私のために働きました:npm install --save <package causing this error>

1
korp

React Native CLIをインストールしているときにも、同様の問題がありました。ここで答えを読んだ後、どの/node_modulesディレクトリを削除すればよいのかわからなかった。私は結局走ったばかりです

npm update -g

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

1
wuliwong

私の場合は、npmのアップデートで解決しました。

Sudo npm install -g npm
1
Marcelo Gumiero

似たようなことで、もう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

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

1
John Doe

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

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

1
Uberbrady

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

例えば:

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

1
achasinh

npm installnpm-shrinkwrap.jsonからのすべてのパッケージをインストールしますが、package.json内のパッケージが前者でプリセットされていない場合はそれらを無視するかもしれません。

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

0
Marius

4.0.0に更新中

4に更新するのは、あなたのAngular依存関係を最新バージョンに更新するのと同じくらい簡単です。そして、アニメーションが欲しいかどうかを二重チェックします。これはほとんどのユースケースで機能します。

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';.
0
Aman Agnihotri

角度バージョン2.x.xで作業している場合は、角度バージョン4.x.xにアップグレードする必要があるかもしれません。

いくつかの依存関係は角度4が必要です

Angular 4のインストール方法やプロジェクトの更新方法についてのチュートリアルです。

0
Terai