164 votes

Comment corriger dans mon package-lock.json un paquet npm vulnérable qui n'est pas répertorié dans le package.json ?

Github m'indique qu'une dépendance de mon fichier package-lock.json est vulnérable et périmée. Le problème est que si je fais npm install ou npm update mais aucun d'entre eux ne met à jour la dépendance dans le fichier package-lock.json.

J'ai beaucoup cherché sur Google, j'ai supprimé le fichier et j'ai fait npm install .

Si quelqu'un peut aider à résoudre ce problème, je l'apprécierais énormément. Le paquet en question est Hoek, que je n'ai pas réellement dans mon fichier package.json.

Merci d'avance.

7 votes

Essayez de supprimer votre package-lock.json et exécutez à nouveau npm install.

1 votes

Vous pouvez vérifier vos dépendances pour trouver celle qui dépend de hoek et la mettre à jour. (Mais vous pourriez aussi ne pas avoir de chance et cette dépendance n'a pas de version plus récente).

0 votes

Je suggère la même chose à @RishikeshDhokare.

74voto

Alex Mulchinock Points 1

Il semble que Hoek soit une dépendance de l'une de vos dépendances (ainsi, un paquet que vous avez dans votre package.json le requiert depuis 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 du paquet en question ait une version explicite ou maximale spécifiée.

Sans voir le package.json de chacune de vos dépendances, il serait difficile de vous conseiller davantage sur la manière de forcer une mise à jour.

Edit : Pour vous aider à identifier quels paquets utilisent quelles dépendances, vous pouvez utiliser l'outil de NPM ls commandement : https://docs.npmjs.com/cli/ls

Par exemple, pour voir quels paquets utilisent Hoek : npm ls hoek

Edit 2 : Comme l'indique correctement Ulysse BN, si vous disposez de NPM version 6 ou ultérieure, vous pouvez utiliser npm audit fix pour demander à NPM de tenter de corriger les vulnérabilités pour vous.

Edit 3 : Ceux qui lisent ceci devraient également consulter la réponse de JBallin ci-dessous. Elle développe les informations que j'ai données ici, et est (à mon avis) une réponse plus structurée qui répond mieux à la question de l'OP. Cependant, si vous voulez une solution rapide, cette réponse devrait suffire.

4 votes

J'ai un problème similaire avec un paquet différent (Growl). Je suppose qu'il s'agit d'une version de quelque chose dans mon fichier 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 l'améliorer si vous pouviez partager la commande qui montrera quel(s) paquet(s) en package.json qui dépendent de la vulnérabilité montrée dans package-lock.json .

0 votes

Voir la réponse mise à jour. Si vous avez besoin d'aide supplémentaire, créez une nouvelle question :)

0 votes

47voto

JBallin Points 753

TLDR : Mettez à jour le paquet parent en utilisant npm i $PARENT_PKG_NAME .


Note

Lorsque vous mettez à jour les dépendances, vous devez consulter le CHANGELOG pour voir s'il n'y a pas de modifications importantes.

Diagnostic

npm audit révélera à la fois le paquet vulnérable (notez que vous aurez besoin d'un fichier package-lock.json pour cela, donc vous devrez exécuter npm i ), ainsi que le paquet dont il est une dépendance (le cas échéant). Notez que vous pouvez également utiliser npm ls $CHILD_PKG_NAME pour voir ses dépendances parentales.

Tentative de réparation rapide

npm audit fix et npm audit fix --force valent la peine d'être essayées, mais parfois la correction devra être effectuée manuellement (voir ci-dessous).

Correction manuelle

Il est fort probable que le paquet parent ait déjà corrigé ses dépendances (vous pouvez le vérifier en allant sur leur GitHub et en examinant les commits récents - ou simplement en regardant si cela corrige le problème), vous pouvez donc simplement exécuter npm i $PARENT_PKG_NAME @$NEW_VERSION et cela mettra à jour votre package-lock.json.

Si le parent n'a pas corrigé la vulnérabilité

Si le responsable ne semble pas être réactif, vous pouvez envisager d'utiliser un paquet alternatif qui accomplit la même chose ou de bifurquer le paquet et de mettre à jour la vulnérabilité vous-même.

Vérifier la correction

Vous pouvez maintenant vérifier que cela a fonctionné en exécutant npm audit et s'assurer qu'aucune vulnérabilité n'apparaît. Validez vos changements, poussez-les vers GitHub, rafraîchissez vos notifications/alertes et ils devraient avoir disparu !

0 votes

Qu'en est-il comme dans mon cas le Quick Fix ne fonctionne pas ni le manuel dans cette réponse que le parent est un cadre qui dans la mise à jour a changé complètement API et se débarrasser même de cette bibliothèque ? Ceci parce que le cadre parent utilise toujours l'ancienne bibliothèque. En effet, l'ancienne est toujours maintenue mais pas mise à jour, je veux dire comment je pourrais procéder ?

1 votes

@CarmineTambascia si le paquet que vous utilisez ne corrige pas ses vulnérabilités (j'ouvrirais un problème/PR dans l'espoir qu'il soit corrigé) - j'envisagerais de faire votre propre fork du ou des paquets, de corriger les vulnérabilités, à la place du paquet affecté.

0 votes

Existe-t-il un moyen de mettre à jour le paquet enfant ? Dans le cas où le paquet parent n'a pas été corrigé des vulnérabilités ?

8voto

Ulysse BN Points 2280

Si vous avez npm@6 ou une version ultérieure, vous pouvez utiliser npm audit fix pour vos problèmes de sécurité.

3voto

scorpion Points 96

Utilisez :

npm i hoek

npm installera la dernière version de hoek et votre package.lock.json sera mis à jour.

0voto

jvvw Points 231

J'ai eu ce problème et j'ai découvert que c'était parce que le serveur sur lequel j'exécutais npm avait une ancienne version de npm - package-lock.json n'est supporté que par des versions plus récentes.

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