Was bedeutet "falsche Peer-Abhängigkeit" bei der Installation von Paketen mit Yarn?

75

Ich habe gerade ein Repo geklont , das die Verwendung von Yarn zum Installieren von Abhängigkeiten empfiehlt . Wenn ich renne yarn install, scheint es in Ordnung zu sein, aber es gibt diese Warnung:

yarn install v0.20.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
warning "[email protected]" has incorrect peer dependency "node-sass@^3.4.2".
[4/4] 📃  Building fresh packages...
✨  Done in 77.59s.

Ich habe online gesucht, um genau herauszufinden, was "falsche Peer-Abhängigkeit" bedeutet. Ich kann jedoch nur Probleme in anderen Repositorys oder Fragen zur Behebung des Problems finden.

Kann jemand erklären, was dies bedeutet und warum es nur eine Warnung und kein Fehler ist?

Ist es auch etwas, das ich versuchen sollte, die Community hinter dem Repo, das ich gerade geklont habe, anzusprechen oder der Community zu melden?

kluge Bohnen
quelle

Antworten:

27

Es ist nur eine Warnung, da es nicht verhindert, dass Ihr Code ausgeführt wird. Es dient nur dazu, Ihnen mitzuteilen, dass etwas mit Ihren Abhängigkeiten nicht stimmt.

Peer-Abhängigkeiten sind eine Möglichkeit für Pakete, anzugeben: "Um mich zu verwenden, sollte auch die x-Version des y-Pakets installiert sein".

Sie sollten auf die neuesten Versionen aktualisieren. Weitere Informationen zu Sass-Loader-Abhängigkeiten finden Sie unter diesem Link

JonnyFoley
quelle
12
In meinem Projekt habe ich: less: 3.0und less-loader: 4.0.5installiert. Beim Laufen webpackbekomme ich: [email protected]" has incorrect peer dependency "less@^2.3.1" Warum spricht er darüber, [email protected]weil ich 4.0.5installiert habe?
Legenden
5

Ich denke, dass es Pakete gibt, für die es keinen großen Unterschied macht (wenn sie nicht in Ihrer App verfügbar sind oder nicht wahrscheinlich sind, dass widersprüchliche Versionen Probleme verursachen, z. B. moment.js), aber dann gibt es Pakete wie React, für die es Es ist wichtig, dass alle React-Abhängigkeiten miteinander kompatibel sind, da sie möglicherweise Komponenten erstellen, die sich gegenseitig verstehen müssen.

In Ihrem Fall wird wahrscheinlich eine Ihrer Abhängigkeiten sass-loaderin einer anderen Version verwendet, als Sie in Ihrem Projekt angegeben haben.

Wenn Sie es als deklarieren, peerDependencykönnen Sie npm mitteilen, welche Version Ihr Projekt erwartet, und Sie erhalten eine Warnung (wie Sie gesehen haben), wenn ein Konflikt vorliegt.

Flip
quelle