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' ; 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 ?
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 :
Installer manuellement les modules de premier niveau, contenant les dépendances non satisfaites :
npm install [email protected]
Restructurez votre package.json. Placez tous les modules de haut niveau (servant de dépendance pour les autres modules) en bas.
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 [email protected]
.
Avant de lancer npm install
, les étapes suivantes peuvent être utiles :
rm -rf node_modules/
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
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.