16 votes

Pourquoi dois-je exécuter "npm install" deux fois pour que mon paquetage soit installé avec succès ?

La première fois que je "npm install" package_1, j'obtiens l'erreur suivante.

npm ERR! path C:\Users\john_\Documents\GitHub\why_npm_nesting_fails\package_1\node_modules\.staging\bignumber.js-55edd243

Je n'utilise pas "bignumber", je suppose donc qu'il s'agit d'une dépendance de MySQL. La deuxième fois que je "npm install" package_1, ça passe.

added 2 packages and audited 30 packages in 0.722s

Cela a quelque chose à voir avec MySQL puisqu'après avoir supprimé cette dépendance, tout fonctionne la première fois.

Voici un diagramme des dépendances :

enter image description here

Le projet simplifié peut être consulté à l'adresse suivante https://github.com/johngrabner/why_npm_nesting_fails Seulement 4 fichiers package.json avec 7 lignes chacun, y compris { } démontrent ce problème. ie : 4 fichiers avec 1 ligne chacun qui démontrent ce problème.

Ce problème m'empêche de placer proprement mon projet dans des conteneurs docker puisque le premier "npm install" échoue. Une solution de contournement consiste à d'installer "package_4", puis "package_3" et ainsi de suite, fonctionne mais Je crains de ne pas comprendre quelque chose qui va se retourner contre moi.

Le problème ci-dessus se produit à la fois sur Windows et sur Docker Node:9.4.

0voto

MarvinJWendt Points 1333

Vous devez impérativement conserver votre package-lock.json .

Voici une bonne description de ce fichier et de son utilité : package-lock.json -- Une manifestation du manifeste

Les points importants sont les suivants :

  • Décrire une représentation unique d'un arbre de dépendance de telle sorte que les coéquipiers, les déploiements et l'intégration continue soient assurés d'installer exactement les mêmes dépendances.

et

  • Optimiser le processus d'installation en permettant à npm d'ignorer les résolutions répétées de métadonnées pour les paquets précédemment installés.

En supprimant ce fichier, vous ( gentil ) perturbent la NPM.

Il est plus facile de garder le package-lock.json puis de faire face à tous les problèmes qui apparaîtront si vous ne le faites pas :)


package-lock.json

"Ce fichier est destiné à être intégré dans les dépôts de sources"

( https://docs.npmjs.com/files/package-lock.json )

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