npmピア依存関係を自動的にインストールする方法は?


274

たとえば、Angular2をインストールすると:

npm install --save angular2
temp@1.0.0 /Users/doug/Projects/dougludlow/temp
├── angular2@2.0.0-beta.3 
├── UNMET PEER DEPENDENCY es6-promise@^3.0.2
├── UNMET PEER DEPENDENCY es6-shim@^0.33.3
├── UNMET PEER DEPENDENCY reflect-metadata@0.1.2
├── UNMET PEER DEPENDENCY rxjs@5.0.0-beta.0
└── UNMET PEER DEPENDENCY zone.js@0.5.11

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-promise@^3.0.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of rxjs@5.0.0-beta.0 but none was installed.
npm WARN angular2@2.0.0-beta.3 requires a peer of zone.js@0.5.11 but none was installed.

ピアの依存関係もインストールするnpmに渡すことができる魔法のフラグはありますか?見つけられませんでした...ピアの依存関係を手動でコピーして貼り付け、正しいバージョンであることを確認するのは面倒です。

言い換えれば、私はむしろする必要はありません:

npm install --save angular2@2.0.0-beta.3 es6-promise@^3.0.2 es6-shim@^0.33.3 reflect-metadata@0.1.2 rxjs@5.0.0-beta.0 zone.js@0.5.11

より良い方法は何ですか?


あなたはすでにその問題を解決しましたか?angular2のインストールで同じ問題があります。-gフラグを使用してes6-promiseを手動でインストールし、npm install -g angular2を再試行した後でも、5つの満たされていないピア依存関係es6-promise、es6-shim、reflect-metadata、rxjsおよびzone.jsで同じエラー/警告が発生します
nttakr 2016

4
@nttakr-はい、ピアの依存関係として必要な正確なバージョンをインストールすると、警告が表示されなくなります。それらをグローバルにインストールしたくない(-gフラグを使用)。それらをローカルにインストールしたいのですが(-Sフラグ)、前述のとおり、それらは正確なバージョンである必要があります(つまり:angular2@2.0.0-beta.3が必要ですes6-promise@^3.0.2)。ただし、ピアの依存関係を自動的にインストールするコマンド/フラグがあるかどうかを知りたいです。
ダグラスラドロー2016

@DouglasLudlow NPMのどのバージョンを使用していますか?
peteb

@peteb:npm -v=>3.5.3
ダグラスラドロー

私は同じ問題を抱えており、解の収量を見つけられ
ませんでした

回答:


178

ピアの依存関係の自動インストールは、解決しようとしたよりも多くの問題を引き起こすため、npm 3で明示的に削除されました。たとえば、ここでそれについて読むことができます:

したがって、いいえ、与えられた理由のために、それらをnpm 3以上で自動的にインストールすることはできません。


4
ええ、私はこれを見ました:github.com/npm/npm/issues/6565 ...私はあなたがまだオプションでフラグや何かでそれらをインストールできることを望んでいました。私は問題か何かを開かなければならないだろうと思います。
ダグラスラドロー2016

157
この種の問題にどのように対処しますか?私はnpmのエキスパートではないので、「xにはyのピアが必要ですが、何も見つかりませんでした」と読むと、「どのピアですか?」そして、「どうすればすべてを再び機能させることができますか?」プロセスはありますか?何が欠けているかがわかるまで、xとyのコードを掘り下げますか?不足しているものを見つけたら、次に何をしますか?ありがとう!
Dan Cancro

81
ああ、それは英語の問題です:「xにはyのピアが必要ですが、何もインストールされていません」は「xにはピアが必要ですが、yがインストールされていません」である必要があります。「xにはyのピアの1つが必要ですが、そのピアはインストールされておらず、必要なyのピアは何も通知されていません」と理解しました。
Dan Cancro

1
また、一覧表示されているピアの依存関係を手動でインストールすると、extraneousパッケージとして取得されます
plsnoban

3
パッケージの依存関係に追加する必要があるため、「無関係」があります。
Dinoboff 2017年

37

私はpackage.jsonを正確な値の警告で書き換えて解決しました:

npm WARN angular2@2.0.0-beta.3 requires a peer of es6-shim@^0.33.3 but none was installed.

package.json: "es6-shim": "^ 0.33.3"、

npm WARN angular2@2.0.0-beta.3 requires a peer of reflect-metadata@0.1.2

package.json: "reflect-metadata": "0.1.2"、

Delete node_modules directory

npm install

15
おそらくnpm cache cleannpm installnode_modulesを拭くよりも良いかもしれませんか?私は常にnode_modulesの削除を控えています。ディレクトリを吹き飛ばすのではなく、問題が何であるかを知りたいです。
ブルーノ

これは、人々がそれを機能させるだけの安全な考えではないと思います。彼らは衝突を悪化させるより大きな変化を持っています:それはライブラリと一致しないコードを持つことです。
ズームラー

npm clean cacheを実行しようとしたときに次のエラーメッセージが表示されました:npm ERR!npm @ 5以降、npmキャッシュは破損の問題から自己回復し、キャッシュから抽出されたデータは有効であることが保証されています。すべてが一貫していることを確認したい場合は、代わりに「npm cache verify」を使用してください。一方、インストーラーで問題をデバッグする場合はnpm install --cache /tmp/empty-cache、実際のキャッシュを無効にする代わりに、一時キャッシュを使用できます。npm ERR!npm ERR!キャッシュ全体を削除する場合は、-forceを指定してこのコマンドを再実行してください。
Tarun

22

このシナリオと他のいくつかで役立つチートコード...

├──アンメットピアの依存関係@ angular / common @ 4.0.2

├──アンメットピアの依存関係@ angular / compiler @ 4.0.2

├──アンメットピアの依存関係@ angular / compiler-cli @ 4.0.2

├──アンメットピアの依存関係@ angular / core @ 4.0.2

├──アンメットピアの依存関係@ angular / forms @ 4.0.2

├──アンメットピアの依存関係@ angular / http @ 4.0.2

├──アンメットピアの依存関係@ angular / platform-b​​rowser @ 4.0.2

├──アンメットピアの依存関係@ angular / platform-b​​rowser-dynamic @ 4.0.2>

  1. エラーをコピーしてコードエディターに貼り付けます。
  2. カーソルで不要な部分を強調表示します。この場合、「├──UNMET PEER DEPENDENCY」
  3. command + dを何度も押します。
  4. [ 削除]を2回押します。(誤って「├──UNMET PEER DEPENDENCY」をハイライト表示した場合は、スペースを押してください。)
  5. 1回押します。「npm install」を追加
  6. 1回押します。追加-保存
  7. ものをcliにコピーして実行します

npm install @ angular / common @ 4.0.2 @ angular / compiler @ 4.0.2 @ angular / compiler-cli @ 4.0.2 @ angular / core @ 4.0.2 @ angular / forms @ 4.0.2 @ angular / http @ 4.0 .2 @ angular / platform-b​​rowser @ 4.0.2 @ angular / platform-b​​rowser-dynamic @ 4.0.2 --save


8
--savenpm 5.0.0以降、このオプションは明らかに不要になりました。stackoverflow.com/ a / 19578808/12484
Jon Schneider

12

プロジェクトnpm-install-peersはピアを検出してインストールします。

現在のところv1.0.1package.json自動での書き戻しはサポートされていません。これにより、ここでのニーズは本質的に解決されます。

進行中の問題にサポートを追加してください:https : //github.com/spatie/npm-install-peers/issues/4


36
実行中に、このメッセージが表示されました。This package doesn't seem to have any peerDependencies
Thabung 2017

2
同じメッセージがあります。
Thibault Boursier、2018

7
わかったので、npm-install-peerspeerDependencies登録してインストールしpackage.jsonます。peerDependenciesなどの依存関係はインストールされませんangular2
霧雨

はい、2番目の@drizzdコメントに:プロジェクトのpackage.jsonにリストされているnpm-install-peersものをインストールすることのみを目的として"peerDependencies"います。直接のピア依存関係ではなく、ファイルの"peerDependencies"それぞれにリストされているものをインストールしようとしてnode_modules/<package>/package.jsonいます。
Will Farley、

5

を含むnpmパッケージを開発しているときに、これらのエラーが発生しましたpeerDependencies。すべてpeerDependenciesがとしてもリストされていることを確認する必要がありましたdevDependencies。プロジェクトは、グローバルにインストールされたパッケージを自動的に使用しません。


「依存関係」を単純に追加するのはやや不器用なので、これはきちんとしたソリューションです。
Ashot

0

糸を取り付けてから実行する

糸グローバル追加インストールpeerdeps


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.