Github me dit qu'une dépendance dans mon fichier package-lock.json est vulnérable et obsolète. Le problème est que si je fais npm install
ou npm update
, aucun d'eux ne met à jour la dépendance dans le fichier package-lock.json.
J'ai fait beaucoup de recherches sur Google à ce sujet, ainsi que supprimé le fichier et terminé npm install
.
Si quelqu'un peut aider à résoudre ce problème, je l'apprécierais énormément. Le package en question est Hoek, que je n'ai pas réellement dans mon fichier package.json.
Merci d'avance.
node.js
npm
package.json
package-lock.json
Raph117
la source
la source
Réponses:
On dirait que Hoek est une dépendance de l'une de vos dépendances (donc, un paquet que vous avez dans votre package.json l'exige de son propre package.json).
Vous avez déjà essayé de supprimer / réinstaller et mettre à jour les dépendances de votre projet sans succès, il semble donc que la dépendance de package en question ait une version explicite ou maximale spécifiée.
Sans voir le package.json pour chacune de vos dépendances, il serait difficile de vous conseiller davantage sur la façon de forcer une mise à jour.
Edit: pour vous aider à identifier quels packages utilisent quelles dépendances, vous pouvez utiliser la
ls
commande NPM : https://docs.npmjs.com/cli/lsPar exemple, pour voir quels packages utilisent Hoek:
npm ls hoek
Edit 2: Comme Ulysse BN le souligne correctement, si vous avez NPM version 6 ou ultérieure, vous pouvez utiliser
npm audit fix
pour demander à NPM d'essayer de corriger les vulnérabilités pour vous.Edit 3: Ceux qui liront ceci devraient également consulter la réponse de JBallin ci-dessous. Il étend les informations que j'ai données ici et constitue (à mon avis) une réponse plus structurée qui répond mieux à la question d'OP. Cependant, si vous voulez une solution rapide, cette réponse devrait suffire.
la source
package.json
qui dépend de la version spécifique (vulnérable) de Growl. Votre réponse est sur la bonne voie et vous pourriez peut-être la clouer si vous pouviez partager la commande qui montrera quel (s) paquet (s)package.json
dépendent du plus vulnérable affichépackage-lock.json
.TLDR: mettez à jour le package parent à l'aide de
npm i $PARENT_PKG_NAME
.Remarque
Lors de la mise à jour des dépendances, vous devez consulter le CHANGELOG pour tout changement de rupture.
Diagnostic
npm audit
révélera à la fois le package vulnérable (notez que vous aurez besoin d'un fichier package-lock.json pour cela, vous devrez donc l'exécuternpm i
), ainsi que le package dont il est une dépendance (le cas échéant). Notez que vous pouvez également utilisernpm ls $CHILD_PKG_NAME
pour voir ses dépendances parentes.Tentative de correction rapide
npm audit fix
etnpm audit fix --force
valent la peine d'essayer, mais parfois le correctif devra être fait manuellement (voir ci-dessous).Correction manuelle
Très probablement, le package parent aura déjà corrigé ses dépendances (vous pouvez le vérifier en accédant à son GitHub et en examinant les récents commits - ou simplement en voyant si cela le corrige), vous pouvez donc simplement exécuter
npm i $PARENT_PKG_NAME @$NEW_VERSION
et il mettra à jour votre package-lock .json.Si le parent n'a pas corrigé la vulnérabilité
Si le responsable ne semble pas réactif, vous pouvez envisager d'utiliser un autre package qui accomplit la même chose ou de forger le package et de mettre à jour la vulnérabilité vous-même.
Vérifier le correctif
Vous pouvez maintenant vérifier que cela a fonctionné en exécutant
npm audit
et en vous assurant qu'aucune vulnérabilité n'apparaît. Validez vos modifications, transférez-les sur GitHub, actualisez vos notifications / alertes et elles devraient disparaître!la source
Si vous avez npm @ 6 ou version ultérieure, vous pouvez l'utiliser
npm audit fix
pour vos problèmes de sécurité.la source
Utilisation:
npm installera la dernière version de hoek et votre package.lock.json sera mis à jour.
la source
J'ai eu ce problème et j'ai trouvé que c'était parce que le serveur sur lequel j'exécutais npm avait une ancienne version de npm sur it- package-lock.json n'est pris en charge que par les versions plus récentes.
la source
avez-vous essayé ceci: accédez à la racine de votre projet, supprimez le
package-lock.json
fichiernode_modules
et les.cache
dossiers, puisnpm install
.la source
Pour vérifier les packages npm vulnérables, utilisez simplement les commandes suivantes:
Pour réparer les paquets npm vulnérables, utilisez simplement les commandes suivantes qui corrigent également package-lock.json:
la source
Modifiez
package-lock.json
manuellement et mettez à jour la version du package vulnérable vers la version fixe, puis utilisezCela installera les packages selon
package-lock.json
en ignorant d'package.json
abord. Ensuite, utilisezencore une fois, pour être sûr que c'est bien fait. Si cela ne vous aide pas, utilisez d'autres solutions données.
Plus d'informations ici:
https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
ou ici: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
la source
Après avoir installé de nouvelles dépendances, exécutez la commande suivante pour mettre à jour le fichier package-lock.json:
la source