Si dos desarrolladores diferentes usan versiones diferentes de node (12/15) y npm (6/7) en un proyecto que se creó originalmente usando un package-lock.json "lockfileVersion": 1 , cuando el desarrollador que usa npm 7x instala una nueva paquetes parece que el package-lock.json se vuelve a crear usando "lockfileVersion": 2 .
Esto parece causar problemas para el desarrollador que usa npm v6, ya que intenta trabajar con lockfileVersion 2 , pero termina produciendo nuevas diferencias.
npm WARN read-shrinkwrap Esta versión de npm es compatible con lockfileVersion@1, pero se generó package-lock.json para lockfileVersion@2. ¡Intentaré hacerlo lo mejor posible con él!
¿Hay alguna forma de especificar que las versiones más nuevas de npm solo usen "lockfileVersion": 1 ? ¿O solo tenemos que obtener todos los desarrolladores en la misma versión de npm ?
npm WARN read-shrinkwrap Esta versión de npm es compatible con lockfileVersion@1, pero se generó package-lock.json para lockfileVersion@2. ¡Intentaré hacerlo lo mejor posible con él!
para superar este problema, ejecute el comando
npm i -g npm@latestglobalmente y ejecutando el comando
npm i npm@latesten el archivo del proyecto me ayudó a resolver el problema.
Me encontré con el mismo problema hoy. Estoy trabajando en un proyecto con un desarrollador que tiene una versión diferente de npm (>7) y me encontré con el mismo problema. Simplemente actualicé mi versión de npm a la última versión que estaba utilizando el otro desarrollador como se mencionó anteriormente. Los siguientes son los pasos para actualizar su npm (para Windows):
Primero, asegúrese de que puede ejecutar scripts en su sistema ejecutando el siguiente comando desde un PowerShell elevado. Para ejecutar PowerShell como Administrator , haga clic en Start , busque PowerShell , haga clic con el botón derecho en PowerShell y seleccione Run as Administrator .
A continuación, ejecute los siguientes comandos:
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force Luego, para instalar y usar esta herramienta de actualización, ejecute el siguiente comando (también desde un PowerShell o cmd.exe elevado). Nota: esta herramienta requiere al menos Node v8
npm install --global --production npm-windows-upgrade npm-windows-upgrade¿Quiere simplemente instalar la última versión? Por supuesto:
npm-windows-upgrade --npm-version latestAhora puede seleccionar la versión que desea instalar desde la línea de comandos.
https://github.com/felixrieseberg/npm-windows-upgrade
El enlace de arriba es la herramienta que he usado. Esta herramienta es tanto para Linux como para Windows. Espero que ayude.
Por lo que puedo ver, los documentos de npm dicen que npm v6 funcionará con archivos de bloqueo de la versión 2 a pesar de la advertencia, por lo que no necesita hacer ninguna de las cosas sugeridas en la respuesta aceptada y puede ignorar con seguridad el mensaje de advertencia.
En las notas de lanzamiento de npm 7 dijeron:
Un cambio a tener en cuenta es el nuevo formato de archivo de bloqueo, que es retrocompatible con los usuarios de npm 6. El archivo de bloqueo v2 desbloquea la capacidad de hacer compilaciones deterministas y reproducibles para producir un árbol de paquetes.
En los documentos de npm dice (mi énfasis):
lockfileVersion
Una versión entera, comenzando en 1 con el número de versión de este documento cuya semántica se usó al generar este paquete-lock.json.
Tenga en cuenta que el formato de archivo cambió significativamente en npm v7 para rastrear información que, de otro modo, habría requerido buscar en node_modules o en el registro de npm. Los archivos de bloqueo generados por npm v7 contendrán lockfileVersion: 2.
- No se proporcionó una versión: un archivo de ajuste "antiguo" de una versión de npm anterior a npm v5.
- 1: La versión del archivo de bloqueo utilizada por npm v5 y v6.
- 2: La versión del archivo de bloqueo utilizada por npm v7, que es compatible con versiones anteriores de los archivos de bloqueo v1.
- 3: La versión del archivo de bloqueo utilizada por npm v7, sin posibilidades de compatibilidad con versiones anteriores. Esto se usa para el archivo de bloqueo oculto en node_modules/.package-lock.json, y probablemente se usará en una versión futura de npm, una vez que la compatibilidad con npm v6 ya no sea relevante .
Es por eso que pueden actualizar automáticamente los archivos de bloqueo de v1 a v2, que mencionas, sin romper nada.
Prueba esto: npm i -g npm@latest
Si esto no soluciona su problema, intente reiniciar su PC.