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/animations@5.2.1 requires a peer of @angular/core@5.2.1 
but none is installed. You must install peer dependencies yourself.
npm WARN @angular/compiler-cli@5.1.0 requires a peer of typescript@>=2.4.2 
<2.6 but none is installed. You must install peer dependencies yourself.
npm WARN @ng-bootstrap/ng-bootstrap@1.0.0-beta.6 requires a peer of 
@angular/core@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @ng-bootstrap/ng-bootstrap@1.0.0-beta.6 requires a peer of 
@angular/common@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @ng-bootstrap/ng-bootstrap@1.0.0-beta.6 requires a peer of 
@angular/forms@^4.0.3 but none is installed. You must install peer 
dependencies yourself.
npm WARN @schematics/angular@0.1.17 requires a peer of @angular-
devkit/core@0.0.29 but none is installed. You must install peer dependencies 
yourself.
npm WARN @schematics/angular@0.1.17 requires a peer of @angular-
devkit/schematics@0.0.52 but none is installed. You must install peer 
dependencies yourself.
npm WARN @schematics/schematics@0.0.11 requires a peer of @angular-
devkit/core@0.0.22 but none is installed. You must install peer dependencies 
yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of 
@angular/core@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of 
@angular/common@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of @angular/platform-
browser@^4.0.0 but none is installed. You must install peer dependencies 
yourself.
npm WARN angular2-notifications@0.7.4 requires a peer of 
@angular/animations@^4.0.1 but none is installed. You must install peer 
dependencies yourself.
npm WARN bootstrap@4.0.0-beta.2 requires a peer of jquery@1.9.1 - 3 but none 
is installed. You must install peer dependencies yourself.
npm WARN bootstrap@4.0.0-beta.2 requires a peer of popper.js@^1.12.3 but 
none is installed. You must install peer dependencies yourself.
npm WARN ng2-toasty@4.0.3 requires a peer of @angular/core@^2.4.7 || ^4.0.0 
but none is installed. You must install peer dependencies yourself.
npm WARN ngx-carousel@1.3.5 requires a peer of @angular/core@^2.4.0 || 
^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN ngx-carousel@1.3.5 requires a peer of @angular/common@^2.4.0 || 
^4.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN tsickle@0.25.5 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: fsevents@1.1.3 
(node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for 
fsevents@1.1.3: wanted {"os":"darwin","arch":"any"} (current: 
{"os":"win32","arch":"x64"})

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

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 ngx-carousel@1.3.5 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/core@5.2.3 --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: fsevents@1.1.3 (node_modules \ fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Nicht unterstützte Plattform für fsevents@1.1.3: 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!


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


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 ng2-completer@3.0.3 requires a peer of @angular/common@>= 6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN ng2-completer@3.0.3 requires a peer of @angular/core@>= 6.0.0 but noneis installed. You must install peer dependencies yourself.
npm WARN ng2-completer@3.0.3 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

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!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.