Github me dice que una dependencia en mi archivo package-lock.json es vulnerable y está desactualizada. El problema es que si lo hago npm install
o npm update
, ninguno de ellos actualizar la dependencia en el archivo de paquete-lock.json.
He buscado mucho en Google sobre esto, así como borrado el archivo y listo npm install
.
Si alguien puede ayudar a resolver esto, se lo agradecería enormemente. El paquete en cuestión es Hoek, que en realidad no tengo en mi archivo package.json.
Muchas gracias de antemano.
node.js
npm
package.json
package-lock.json
Raph117
fuente
fuente
Respuestas:
Parece que Hoek es una dependencia de una 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.
Editar: para ayudarlo a identificar qué paquetes están usando qué dependencias, puede usar el
ls
comando de NPM : https://docs.npmjs.com/cli/lsPor ejemplo, para ver qué paquetes están usando Hoek:
npm ls hoek
Edición 2: como Ulysse BN señala correctamente, si tiene NPM versión 6 o posterior, puede usar
npm audit fix
para pedirle a NPM que intente arreglar las vulnerabilidades por usted.Edición 3: aquellos que lean esto también deberían consultar la respuesta de JBallin a continuación. Amplía la información que he proporcionado aquí y es (en mi opinión) una respuesta más estructurada que aborda mejor la pregunta de OP. Sin embargo, si desea una solución rápida, esta respuesta debería ser suficiente.
fuente
package.json
que depende de la versión específica (vulnerable) de Growl. Su respuesta está en el camino correcto y tal vez podría clavarla si pudiera compartir el comando que mostrará qué paquete (s)package.json
depende del vulnerable que se muestrapackage-lock.json
.TLDR: actualice el paquete principal usando
npm i $PARENT_PKG_NAME
.Nota
Al actualizar las dependencias, debe revisar el CHANGELOG para ver si hay cambios importantes.
Diagnóstico
npm audit
revelará tanto el paquete vulnerable (tenga en cuenta que necesitará un archivo package-lock.json para esto, por lo que deberá ejecutarlonpm i
), así como el paquete del que depende (si corresponde). Tenga en cuenta que también puede usarnpm ls $CHILD_PKG_NAME
para ver sus dependencias principales.Intento de solución rápida
npm audit fix
ynpm audit fix --force
vale la pena intentarlo, pero a veces la corrección deberá realizarse manualmente (ver más abajo).Arreglo manual
Lo más probable es que el paquete principal ya haya solucionado sus dependencias (puede verificar esto yendo a su GitHub y revisando las confirmaciones recientes, o simplemente viendo si esto lo soluciona), por lo que puede ejecutar
npm i $PARENT_PKG_NAME @$NEW_VERSION
y actualizará su bloqueo de paquete .json.Si el padre no ha solucionado la vulnerabilidad
Si el mantenedor no parece responder, puede considerar usar un paquete alternativo que logre lo mismo o bifurcar el paquete y actualizar la vulnerabilidad usted mismo.
Verificar corrección
Ahora puede verificar que funcionó ejecutando
npm audit
y asegurándose de que no aparezcan vulnerabilidades. Confirme sus cambios, envíelos a GitHub, actualice sus notificaciones / alertas y ¡deberían desaparecer!fuente
Si tiene npm @ 6 o posterior, puede usarlo
npm audit fix
para sus problemas de seguridad.fuente
Utilizar:
npm instalará la última versión de hoek y su package.lock.json se actualizará.
fuente
Tuve este problema y descubrí que se debía a que el servidor en el que estaba ejecutando npm tenía una versión anterior de npm, package-lock.json solo es compatible con las versiones más recientes.
fuente
Intentaste esto: ve a la raíz de tu proyecto, elimina el
package-lock.json
archivonode_modules
y las.cache
carpetas, y luegonpm install
.fuente
Para verificar paquetes npm vulnerables, simplemente use los siguientes comandos:
Para arreglar paquetes vulnerables de npm, simplemente use los siguientes comandos que también arreglarán package-lock.json:
fuente
Edite
package-lock.json
manualmente y actualice la versión del paquete vulnerable a la corregida y luego useEso instalará los paquetes de acuerdo con
package-lock.json
ignorandopackage.json
primero. Entonces usanuevamente, para asegurarse de que esté bien hecho. Si no ayuda, utilice otras soluciones dadas.
Más información aquí:
https://blog.npmjs.org/post/171556855892/introducing-npm-ci-for-faster-more-reliable
o aquí: https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
fuente
Después de instalar nuevas dependencias, ejecute el siguiente comando para actualizar el archivo package-lock.json:
fuente