web-dev-qa-db-fra.com

Pourquoi npm install dit-il que j'ai des dépendances non satisfaites?

J'ai un paquet de noeud. Lorsque j'exécute npm install à partir de la racine du paquet, il installe de nombreuses choses, mais affiche ensuite plusieurs messages d'erreur qui ressemblent à ceci:

dépendence unm nw WARN/Utilisateurs/seanmackesey/google_drive/code/explorer/generator/node_modules/findup-sync/node_modules/glob requiert graceful-fs@'~1.2.0 'mais sera chargé

Je dois être confus sur ce que fait exactement npm install. S'il détecte une dépendance, ne devrait-il pas l'installer? Dans quelles conditions cela me donne-t-il des messages d'erreur de ce type et comment puis-je résoudre les dépendances?

387
Sean Mackesey

Je pense que c’est parce que la résolution de dépendance est un peu cassée, voir https://github.com/isaacs/npm/issues/1341#issuecomment-20634338

Voici la solution possible:

  1. Vous devez manuellement installer les modules de niveau supérieur contenant les dépendances non résolues: Npm install [email protected]

  2. Re-structurez votre package.json. Placez tous les modules de haut niveau (sert de dépendance pour les autres modules) en bas.

  3. Relancez la commande 'npm install'. 

Le problème peut être causé par l'incapacité de npm à télécharger l'intégralité du package en raison d'un délai d'attente dépassé ou d'un autre problème. 

Remarque: Vous pouvez également installer manuellement les packages ayant échoué à l'aide de npm install [email protected].

Avant d’exécuter «npm install», il peut être utile de procéder comme suit:

  • supprimez node_modules à l'aide de rm -rf node_modules /
  • exécuter le cache npm en mode minimal

Pourquoi 'enlever node_modules' est parfois nécessaire? Si l'installation d'un module imbriqué échoue lors de l'installation de npm, l'installation suivante de npm ne détectera pas les dépendances imbriquées manquantes. 

Si tel est le cas, il suffit parfois de supprimer la dépendance de niveau supérieur de ces modules imbriqués manquants et d'exécuter à nouveau l'installation de npm. Voir 

384
dule

Cela m'est arrivé lorsque le WIFI est tombé en panne pendant un npm install. Supprimer node_modules et relancer npm install le corrige.

78
geon

J'ai corrigé le problème en utilisant ces lignes de commande 

  • $ rm -rf node_modules/ 
  • $ Sudo npm update -g npm
  • $ npm install

C'est fait!

33
zatamine

La mise à niveau de NPM vers la dernière version peut grandement vous aider. La réponse de dule ci-dessus est juste de dire que la gestion des dépendances est un peu cassée, mais il semble que cela concerne principalement les anciennes versions de npm.

La commande npm list vous donne une liste de tous les node_modules installés. Lors de la mise à niveau de la version 1.4.2 à la version 2.7.4, de nombreux modules précédemment marqués avec WARN unmet dependency n'étaient plus notés comme tels.

Pour mettre à jour npm, vous devez taper npm install -g npm sous MacOSX ou Linux. Sous Windows, j’ai constaté que le re-téléchargement et la réexécution du programme d’installation de nodejs étaient un moyen plus efficace de mettre à jour npm.

11
stephen

Les réponses ci-dessus ne m'ont pas complètement aidé même après la suppression du répertoire node_modules.

La commande ci-dessous m'a aidé enfin: 

npm config set registry http://registry.npmjs.org/

Notez que cela extrait les modules de nœud via une connexion HTTP non sécurisée. 

Src: https://stackoverflow.com/a/13119867/4082503

9
Vinay Vemula

Pour chaque -- UNMET PEER DEPENDENCY, par ex. -- UNMET PEER DEPENDENCY [email protected], installez cette dépendance avec npm install --save [email protected] jusqu'à ne plus avoir UNMET DEPENDENCIES.

Bonne chance.

3
Akash

Cela a résolu le problème pour moi:

  1. Corrigez les numéros de version dans package.json, en fonction des erreurs;
  2. Supprimer node_modules (rm -rf node_modules);
  3. Réexécutez npm install.

Répétez ces étapes jusqu'à ce qu'il n'y ait plus d'erreur.

2
user1585939

--dev installer devDependencies de manière récursive (et son exécution pour toujours ...) Comment peut-il aider à résoudre les différences de version? 

Vous pouvez essayer de supprimer le dossier node_moduls, puis de nettoyer le cache npm puis de réexécuter 'npm i'.

1
arielhad

J'ai rencontré ce problème lors de l'installation des packages de réaction et cela a fonctionné pour moi: npm install --save <package causing this error>

1
korp

J'ai eu un problème similaire lors de l'installation de la CLI Native React. Je ne savais pas quel répertoire /node_modules je devais supprimer après avoir lu les réponses ici. J'ai finalement juste couru

npm update -g

et a pu installer le paquet après cela.

1
wuliwong

Dans mon cas, la mise à jour de npm l'a résolu.

Sudo npm install -g npm
1
Marcelo Gumiero

Quelque chose dans le même sens, je voudrais ajouter une autre étape.

Notez que sur npm version> 1.4.9, 'npm install' installe devDependencies. Essayez d’abord de supprimer les modules et le cache existants:

remove node_modules $ rm -rf node_modules/
run $ npm cache clean

Alors essaye:

npm install --dev
npm update --dev

Cela résoudra au moins la résolution de dépendance récursive.

1
John Doe

J'essayais de travailler sur un système de déploiement automatisé qui exécute npm install, de sorte qu'un grand nombre de ces solutions ne fonctionneraient pas dans une fasion automatisée. Je n'étais pas en mesure de supprimer/recréer node_modules/ ni de modifier facilement les versions de Node.js.

J'ai donc fini par exécuter npm shrinkwrap - en ajoutant le fichier npm-shrinkwrap.json à mon ensemble de déploiement et en exécutant les installations à partir de là. Cela a réglé le problème pour moi; avec le fichier shrinkwrap comme "assistant", npm semblait être capable de trouver les bons packages et de les installer pour moi. (Shrinkwrap a également d’autres fonctionnalités, mais c’était ce dont j’avais besoin dans ce cas particulier).

1
Uberbrady

J'exécute npm list et ai installé tous les paquets listés comme UNMET DEPENDENCY

Par exemple:

├── UNMET DEPENDENCY css-loader@^0.23.1 
npm install css-loader@^0.23.1

1
achasinh

npm install installera tous les packages à partir de npm-shrinkwrap.json, mais peut ignorer les packages dans package.json, s'ils ne sont pas prédéfinis dans l'ancien.

Si votre projet a un npm-shrinkwrap.json, assurez-vous d’exécuter npm shrinkwrap pour le régénérer, chaque fois que vous ajoutez, ajoutez/supprimez/modifiez package.json.

0
Marius

Mise à jour vers 4.0.0

Mettre à jour à 4 est aussi simple que mettre à jour vos dépendances angulaires avec la dernière version et vérifier si vous voulez des animations. Cela fonctionnera pour la plupart des cas d'utilisation.

Sous Linux/Mac: 

npm install @angular/{common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router,animations}@latest TypeScript@latest --save 

Sous Windows:

npm install @angular/common@latest @angular/compiler@latest @angular/compiler-cli@latest @angular/core@latest @angular/forms@latest @angular/http@latest @angular/platform-browser@latest @angular/platform-browser-dynamic@latest @angular/platform-server@latest @angular/router@latest @angular/animations@latest TypeScript@latest --save

Ensuite, exécutez la commande ng serve ou npm start que vous utilisez normalement, et tout devrait fonctionner.

Si vous comptez sur Animations, importez la nouvelle BrowserAnimationsModule à partir de @angular/platform-browser/animations dans votre racine NgModule. Sans cela, votre code sera compilé et exécuté, mais les animations déclencheront une erreur. Les importations à partir de @angular/core sont déconseillées, utilisez les importations à partir du nouveau package. 

import { trigger, state, style, transition, animate } from '@angular/animations';.
0
Aman Agnihotri

Faites attention à votre version angulaire, si vous travaillez sous 2.x.x angulaire, vous devrez peut-être passer à 4.x.x

Certaines dépendances doivent être angulaires 4

Voici un tutoriel sur la façon d’installer angular 4 ou de mettre à jour votre projet.

0
Terai