91 votes

Comment gérer l'installation des dépendances des pairs dans Angular CLI ?

Je me suis retrouvé dans un cycle d'erreurs presque sans fin lorsque j'ai essayé de mettre à jour mon CLI Angular et NPM. Chaque fois que je mets à jour, je reçois des messages WARN me disant d'installer les dépendances des pairs (voir ci-dessous), mais chaque fois que j'installe une dépendance, je reçois d'autres messages WARN. Existe-t-il un meilleur moyen de gérer cette situation ou cela prend-il sérieusement des heures ?

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"})

Je sais que je dois faire quelque chose de mal, mais je suis nouveau dans Angular.

94voto

R. Richards Points 12947

Les avertissements relatifs à la dépendance des pairs peuvent, le plus souvent, être ignorés. La seule fois où vous voudrez prendre des mesures est si la dépendance est entièrement manquante, ou si la version d'une dépendance est supérieure à la version que vous avez installée.

Prenons l'exemple de cet avertissement :

npm WARN @angular/animations@5.2.1 nécessite un pair de @angular/core@5.2.1 mais aucun n'est installé. Vous devez installer vous-même les vous-même.

Avec Angular, vous souhaitez que les versions que vous utilisez soient cohérentes dans tous les paquets. S'il y a des versions incompatibles, changez les versions dans votre fichier paquet.json et exécutez npm install pour qu'ils soient tous synchronisés. J'ai tendance à conserver mes versions d'Angular à la dernière version, mais vous devrez vous assurer que vos versions sont cohérentes pour la version d'Angular dont vous avez besoin (qui peut ne pas être la plus récente).

Dans une situation comme celle-ci :

npm WARN ngx-carousel@1.3.5 nécessite un pair de @angular/core@^2.4.0 ||. ^4.0.0 mais aucun n'est installé. Vous devez installer les dépendances des pairs vous-même.

Si vous travaillez avec une version d'Angular supérieure à 4.0.0, vous n'aurez probablement aucun problème. Rien à faire dans ce cas. Si vous utilisez une version d'Angular inférieure à 2.4.0, vous devez mettre à jour votre version. Mettez à jour le paquet.json et exécutez npm install ou exécuter npm install pour la version spécifique dont vous avez besoin. Comme ceci :

npm install @angular/core@5.2.3 --save

Vous pouvez laisser de côté le --save si vous exécutez npm 5.0.0 ou une version plus récente, cette version enregistre le paquet dans la section dépendances du fichier paquet.json automatiquement.

Dans cette situation :

npm WARN optional SKIPPING DEPENDANCE OPTIONNELLE : fsevents@1.1.3 (node_modules \fsevents ) : npm WARN notsup SKIPPING OPTIONAL DEPENDENCY : Plate-forme non prise en charge pour fsevents@1.1.3 : wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

Vous êtes sous Windows, et fsevent nécessite OSX. Cet avertissement peut être ignoré.

J'espère que cela vous aidera, et amusez-vous bien en apprenant Angular !

0 votes

Merci ! Dois-je mettre à jour les versions dans les "dependencies" et "devDependencies" de mon package.json ou dois-je créer un "peerDependencies" et y ajouter ces versions ?

0 votes

Mon commentaire sur le fait de ne pas avoir à s'inquiéter devDependencies n'est pas bon. Vous devez également mettre à jour les numéros de version dans cette section. Les paquets Angular de cette section doivent avoir la même version que les paquets de la section dependencies section. Changer les versions est aussi quelque chose à faire. Désolé pour toute confusion !

1 votes

Cela semble être une tâche pour les ordinateurs, toutes les informations sont dans le package.json et mon OS est évident, ce n'est pas amusant d'apprendre cela. Un jour, les gens diront "nos ancêtres ont beaucoup souffert pour en arriver là".

5voto

wojtek85 Points 41

Vous pouvez ignorer les avertissements relatifs aux dépendances entre pairs en utilisant le drapeau --force avec Angular cli lors de la mise à jour des dépendances.

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

Pour une liste complète des options, consultez la documentation : https://angular.io/cli/update

7 votes

Je trouverais cette réponse plus utile si elle comprenait une explication rapide de ce que cela fait et pourquoi cela vous a aidé à résoudre le problème soulevé par le PO.

0 votes

@JTech J'ai mis à jour ma réponse, merci pour les commentaires.

0 votes

En utilisant l'invite de commande node js dans le dossier clientapp, cela fonctionne, merci beaucoup.

1voto

Yaham Points 1

Mettez à jour votre angular (globaly) :

  • en mettant à jour avec :

ng update @angular/cli @angular/core

  • ou retirer l'angulaire et le réinstaller :

npm uninstall -g @angular/cli
npm install -g @angular/cli

Après, si vous voulez utiliser votre ancien projet angulaire (localy) :

  • Test avec npm list si certaines dépendances ont changé et obtenir cette erreur :

npm ERR ! peer dep manquant : mydependencie, requis par somecomponent

ça veut dire que vous devez mettre à jour votre projet :

  • Ensuite, vous pouvez simplement créer un nouveau projet, coller votre code et réinstaller toutes les dépendances.
  • Ou installer toutes les dépendances requises par npm list :

npm install mydependencie

0voto

likejiujitsu Points 649

J'ai découvert que l'exécution du npm install commande dans le même répertoire où se trouve votre projet Angular élimine ces avertissements. Je n'en connais pas la raison.

Plus précisément, j'essayais d'utiliser ng2-completer

$ 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.

Je n'ai pas pu compiler. Lorsque j'ai réessayé, cette fois dans le répertoire de mon projet Angular, qui se trouvait dans foo/foo_app, tout s'est bien passé.

cd foo/foo_app
$ npm install ng2-completer --save

0voto

John Peters Points 3662

Les bibliothèques de paquets NPM ont une section dans le fichier package.json appelée peerDependencies. Par exemple, une bibliothèque construite en Angular 8, indiquera généralement Angular 8 comme une dépendance. Il s'agit d'une véritable dépendance pour quiconque utilise une version inférieure à 8. Mais pour ceux qui utilisent les versions 8, 9 ou 10, on peut se demander s'il faut s'en préoccuper.

J'ai ignoré ces messages sur les mises à jour d'Angular, mais là encore, nous avons des tests unitaires et des tests Cypress !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X