Wie gehe ich mit der Installation von Peer-Abhängigkeiten in Angular CLI um?

75

Ich habe mich in einem fast endlosen Zyklus von Fehlern befunden, als ich versucht habe, meine Angular CLI und NPM zu aktualisieren. Bei jedem Update werden WARN-Meldungen angezeigt, in denen ich aufgefordert werde, Peer-Abhängigkeiten zu installieren (siehe unten). Bei jeder Installation einer Abhängigkeit werden jedoch weitere WARN-Meldungen angezeigt. Gibt es eine bessere Möglichkeit, mit dieser Situation umzugehen, oder dauert es ernsthaft Stunden?

npm WARN @angular/[email protected] requires a peer of @angular/[email protected] 
but none is installed. You must install peer dependencies yourself.
npm WARN @angular/[email protected] requires a peer of typescript@>=2.4.2 
<2.6 but none is installed. You must install peer dependencies yourself.
npm WARN @ng-bootstrap/[email protected] requires a peer of 
@angular/core@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @ng-bootstrap/[email protected] requires a peer of 
@angular/common@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @ng-bootstrap/[email protected] requires a peer of 
@angular/forms@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @schematics/[email protected] requires a peer of @angular-
devkit/[email protected] but none is installed. You must install peer dependencies 
yourself.
npm WARN @schematics/[email protected] requires a peer of @angular-
devkit/[email protected] but none is installed. You must install peer 
dependencies yourself.
npm WARN @schematics/[email protected] requires a peer of @angular-
devkit/[email protected] but none is installed. You must install peer dependencies 
yourself.
npm WARN [email protected] requires a peer of 
@angular/core@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN [email protected] requires a peer of 
@angular/common@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN [email protected] requires a peer of @angular/platform-
browser@^4.0.0 but none is installed. You must install peer dependencies 
yourself.
npm WARN [email protected] requires a peer of 
@angular/animations@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN [email protected] requires a peer of [email protected] - 3 but none 
is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of popper.js@^1.12.3 but 
none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/core@^2.4.7 || ^4.0.0 
but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/core@^2.4.0 || 
^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/common@^2.4.0 || 
^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of typescript@>=2.4.2 <2.6 but none 
is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] 
(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for 
[email protected]: wanted {"os":"darwin","arch":"any"} (current: 
{"os":"win32","arch":"x64"})

Ich weiß, dass ich etwas falsch machen muss, aber ich bin neu in Angular.

Tommy
quelle

Antworten:

79

Peer-Abhängigkeitswarnungen können häufig ignoriert werden. Sie möchten nur dann Maßnahmen ergreifen, wenn die Peer-Abhängigkeit vollständig fehlt oder wenn die Version einer Peer-Abhängigkeit höher ist als die von Ihnen installierte Version.

Nehmen wir diese Warnung als Beispiel:

npm WARN @ angle / animations @ 5.2.1 erfordert einen Peer von @ angle / core @ 5.2.1, aber keiner ist installiert. Sie müssen Peer-Abhängigkeiten selbst installieren.

Mit Angular möchten Sie, dass die von Ihnen verwendeten Versionen über alle Pakete hinweg konsistent sind. Wenn inkompatible Versionen vorhanden sind, ändern Sie die Versionen in Ihrer package.json und führen npm installSie sie aus, damit sie alle synchronisiert werden. Ich neige dazu, meine Versionen für Angular auf dem neuesten Stand zu halten, aber Sie müssen sicherstellen, dass Ihre Versionen für jede von Ihnen benötigte Angular-Version (die möglicherweise nicht die neueste ist) konsistent sind.

In einer Situation wie dieser:

npm WARN [email protected] erfordert einen Peer von @ angle / core @ ^ 2.4.0 || ^ 4.0.0 aber keiner ist installiert. Sie müssen Peer-Abhängigkeiten selbst installieren.

Wenn Sie mit einer Version von Angular arbeiten, die höher als 4.0.0 ist, treten wahrscheinlich keine Probleme auf. Dann gibt es nichts zu tun. Wenn Sie eine Angular-Version unter 2.4.0 verwenden, müssen Sie Ihre Version aufrufen. Aktualisieren Sie die Datei package.json und führen Sie sie aus npm installoder führen Sie sie npm installfür die gewünschte Version aus. So was:

npm install @angular/[email protected] --save

Sie können das auslassen , --savewenn Sie npm laufen 5.0.0 oder höher, dass Version das Paket in den Abhängigkeiten Abschnitt des spart package.json automatisch.

In dieser Situation:

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules \ fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Nicht unterstützte Plattform für [email protected]: wollte {"os": "darwin", "arch": "any "} (aktuell: {" os ":" win32 "," arch ":" x64 "})

Sie führen Windows aus und für fsevent ist OSX erforderlich. Diese Warnung kann ignoriert werden.

Hoffe das hilft und viel Spaß beim Lernen von Angular!

R. Richards
quelle
Vielen Dank! Soll ich die Versionen in den "Abhängigkeiten" und "devDependencies" in meiner package.json aktualisieren oder sollte ich "peerDependencies" erstellen und diese Versionen hinzufügen?
Tommy
Mein Kommentar, dass ich mir keine Sorgen machen muss, devDependenciesist nicht richtig. Sie möchten auch die Versionsnummern in diesem Abschnitt aktualisieren. Die Angular-Pakete in diesem Abschnitt sollten dieselbe Version haben wie die Pakete in diesem dependenciesAbschnitt. Ändern Sie die Versionen, da muss möglicherweise auch etwas getan werden. Entschuldigung für die Verwirrung!
R. Richards
scheint eine Aufgabe für Computer zu sein, alle Informationen sind in der package.json enthalten und mein Betriebssystem ist offensichtlich, es macht keinen Spaß, diese zu lernen. Eines Tages sagen die Leute "unsere Vorfahren haben viel gelitten, um uns diesen Punkt zu bringen"
mkb
@ R.Richards schreibt: "Wenn Sie mit einer Version von Angular arbeiten, die höher als 4.0.0 ist, werden Sie wahrscheinlich keine Probleme haben." Kann der Analysator das Vorhandensein von Angular höher als 4.0.0 erkennen? Wenn ja, warum dann diese Warnung anzeigen?
Chrisinmtown
Es tut mir leid, dass ich stumpf bin, aber ich verstehe nicht, warum Sie eine Warnung wie `@ angle / core @ ^ 2.4.0 || erhalten ^ 4.0.0, aber keine ist installiert`, wenn Sie mit einer Version von Angular arbeiten, die höher als 4.0.0 ist… Liegt es nur daran, dass die Version deaktiviert ist?
Yann
2

Sie können die Peer-Abhängigkeitswarnungen ignorieren, indem Sie beim Aktualisieren von Abhängigkeiten das Flag --force mit Angular cli verwenden.

ng update @angular/cli @angular/core --force

Eine vollständige Liste der Optionen finden Sie in den Dokumenten: https://angular.io/cli/update

Wojtek Dmyszewicz
quelle
4
Ich würde diese Antwort hilfreicher finden, wenn sie eine kurze Erklärung enthalten würde, was dies bewirkt und warum es Ihnen bei dem vom OP
JTech
@JTech Ich habe meine Antwort aktualisiert, danke für das Feedback.
Wojtek Dmyszewicz
Mit der Eingabeaufforderung des Knotens js im Clientapp-Ordner funktioniert es, vielen Dank
Hosam Hemaily
0

Ich habe festgestellt, dass das Ausführen des npm installBefehls in demselben Verzeichnis, in dem sich Ihr Angular-Projekt befindet , diese Warnungen beseitigt. Ich weiß nicht warum.

Insbesondere habe ich versucht, ng2-Completer zu verwenden

$ npm install ng2-completer --save
npm WARN saveError ENOENT: no such file or directory, open 'C:\Work\foo\package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open 'C:\Work\foo\package.json'
npm WARN [email protected] requires a peer of @angular/common@>= 6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/core@>= 6.0.0 but noneis installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of @angular/forms@>= 6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN foo No description
npm WARN foo No repository field.
npm WARN foo No README data
npm WARN foo No license field.

Ich konnte nicht kompilieren. Als ich es erneut versuchte, diesmal in meinem Angular-Projektverzeichnis, das sich in foo / foo_app befand, funktionierte es einwandfrei.

cd foo/foo_app
$ npm install ng2-completer --save
Likejudo
quelle
0

NPM-Paketbibliotheken haben einen Abschnitt in der Datei package.json mit dem Namen peerDependencies. Zum Beispiel; In einer in Angular 8 erstellten Bibliothek wird Angular 8 normalerweise als Abhängigkeit aufgeführt. Dies ist eine echte Abhängigkeit für jeden, der weniger als Version 8 ausführt. Für jeden, der Version 8, 9 oder 10 ausführt, ist es jedoch fraglich, ob Bedenken verfolgt werden sollten.

Ich habe diese Meldungen bei Angular Updates sicher ignoriert, aber andererseits haben wir Unit- und Cypress-Tests!

JWP
quelle