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

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

npm WARN unmet dependency /Users/seanmackesey/google_drive/code/explore/generator/node_modules/findup-sync/node_modules/glob requires graceful-fs@'~1.2.0&#39 ; but will load

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 me donne-t-il des messages d'erreur comme celui-ci, et comment puis-je résoudre les dépendances ?

Solution

Je crois que c'est parce que la résolution des dépendances est un peu cassée, voir https://github.com/npm/npm/issues/1341#issuecomment-20634338.

Voici les solutions possibles :

  1. Installer manuellement les modules de premier niveau, contenant les dépendances non satisfaites : npm install findup-sync@0.1.2

  2. Restructurez votre package.json. Placez tous les modules de haut niveau (servant de dépendance pour les autres modules) en bas.

  3. Exécutez à nouveau la commande npm install.

Le problème peut être dû au fait que npm n'a pas réussi à télécharger tous les paquets en raison d'un dépassement de délai ou autre.

Remarque : Vous pouvez également installer manuellement les paquets qui ont échoué en utilisant la commande npm install findup-sync@0.1.2.

Avant de lancer npm install, les étapes suivantes peuvent être utiles :

  • supprimez node_modules en utilisant rm -rf node_modules/
  • Exécutez npm cache clean.

Pourquoi la suppression de node_modules est-elle parfois nécessaire ? Lorsqu'un module imbriqué ne parvient pas à s'installer lors de l'installation de npm install, l'installation suivante de npm install ne détectera pas ces dépendances imbriquées manquantes.

Si c'est le cas, il suffit parfois de supprimer la dépendance de premier niveau de ces modules imbriqués manquants, et de relancer npm install. Voir

Commentaires (12)

Cela m'est arrivé quand le WIFI est tombé en panne pendant un npm install. Enlever node_modules et relancer npm install a réglé le problème.

Commentaires (7)

Les réponses ci-dessus ne m'ont pas aidé complètement, même après avoir supprimé le répertoire node_modules.

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

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

Notez que cela tire les modules de nœuds sur une connexion HTTP non sécurisée.

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

Commentaires (3)