node.js - ¿Cómo soluciono un paquete npm vulnerable en mi package-lock.json que no aparece en package.json?
(7)
Github me dice que una dependencia en mi archivo package-lock.json es vulnerable y está desactualizada. El problema es que si hago npm install
o npm update
, ninguno de ellos actualiza la dependencia en el archivo package-lock.json.
He hecho un montón de googlear en esto, así como borrado el archivo y hecho la npm install
.
Si alguien puede ayudar a resolver esto, lo apreciaría enormemente. El paquete en cuestión es Hoek, que en realidad no tengo en mi archivo package.json.
Muchas gracias de antemano.
Parece que Hoek depende de sus dependencias (por lo tanto, un paquete que tiene en su package.json lo requiere de su propio package.json).
Ya ha intentado eliminar / reinstalar y actualizar las dependencias de su proyecto sin éxito, por lo que parece que la dependencia del paquete en cuestión tiene una versión explícita o máxima especificada.
Sin ver el package.json para cada una de sus dependencias, sería difícil aconsejar más sobre cómo forzar una actualización.
Edición: para ayudarlo a identificar qué paquetes están usando qué dependencias, puede usar el comando ls
de NPM: https://docs.npmjs.com/cli/ls
Por ejemplo, para ver qué paquetes están usando Hoek: npm ls hoek
Edición 2: como Ulysse BN señala correctamente, si tiene la versión 6 o posterior de NPM, puede usar la npm audit fix
para pedirle a NPM que intente arreglar las vulnerabilidades para usted.
Si tiene npm @ 6 o posterior, puede usar la npm audit fix
para sus problemas de seguridad.
TLDR: actualice el paquete primario utilizando npm i $PARENT_PKG_NAME
.
Diagnóstico
npm audit
revelará el paquete vulnerable (tenga en cuenta que necesitará un archivo package-lock.json para esto, por lo que deberá ejecutar npm i
), así como el paquete del que depende (si corresponde) ). (Tenga en cuenta que también puede usar npm ls $CHILD_PKG_NAME
para ver sus dependencias principales.
Intento de solución rápida
npm audit fix
y npm audit fix --force
, pero a veces la corrección debe realizarse manualmente (ver más abajo).
Arreglo manual
Lo más probable es que el paquete primario ya haya arreglado sus dependencias (puede verificar esto yendo a su GitHub y revisando las confirmaciones recientes, o simplemente viendo si esto lo soluciona), así que puede ejecutar npm i $PARENT_PKG_NAME
y se actualizará su paquete-lock.json.
Verificar Arreglo
Ahora puede verificar que funcionó ejecutando la npm audit
y asegurándose de que no se muestren vulnerabilidades. ¡Confíe sus cambios, empújelos a GitHub, actualice sus notificaciones / alertas y deberían haberse ido!
Tuve este problema y descubrí que se debía a que el servidor en el que estaba ejecutando npm tenía una versión antigua de npm en él: package-lock.json solo es compatible con las versiones más nuevas.
Utilizar:
npm i hoek
npm instalará la última versión de hoek y tu package.lock.json se actualizará.
eliminar el archivo de bloqueo e instalar de nuevo con NPM.
Puede verificar y agregar la última versión con: https://www.npmjs.com/package/npm-check-updates
package-lock.json
esto: vaya a la raíz de su proyecto, elimine el archivo package-lock.json
, las carpetas node_modules
y .cache
, y luego npm install
.