Tengo un dockerfile como se muestra a continuación, pero durante el paso RUN npm ci , hay una advertencia,
npm WARN old lockfile El archivo package-lock.json se creó con una versión anterior de npm
que no puedo descifrar..
Probé con npm install en lugar de npm ci y agregué el --package-lock , pero sigo recibiendo esta advertencia. Es una especie de advertencia de que tengo que ignorarlo o ¿qué debo hacer para solucionar esto?
Step 12/26 : RUN npm ci --production --package-lock && npm ci --production --package-lock --prefix ./ui-runner ---> Running in 3473c209b98c npm WARN old lockfile npm WARN old lockfile The package-lock.json file was created with an old version of npm, npm WARN old lockfile so supplemental metadata must be fetched from the registry. npm WARN old lockfile npm WARN old lockfile This is a one-time fix-up, please be patient... npm WARN old lockfileAquí está mi archivo Docker .
FROM node:14.17.1-alpine3.13 AS builder WORKDIR /usr/src/app COPY package.json package-lock.json* ./ COPY ui-runner/package*.json ./ui-runner/ COPY .npmrc .npmrc COPY ui-runner/.npmrc ./ui-runner/.npmrc RUN npm -g install npm@7.19.1 RUN npm ci --production --package-lock && \ npm ci --production --package-lock --prefix ./ui-runner RUN rm -f .npmrc && \ rm -f ui-runner/.npmrc FROM node:14.17.1-alpine3.13 WORKDIR /usr/src/app RUN apk update && apk add --no-cache curl bash RUN addgroup -g 1001 test && \ adduser -S -u 1001 -G test test RUN chown -R test /usr/src/app && \ chmod 755 /usr/src/app COPY --from=builder /usr/src/app /usr/src/app COPY . . RUN npm run build:docker USER test EXPOSE 3000 9183 CMD [ "npm", "run", "start:ui-runner" ]Estaba enfrentando un problema similar. Después de leer los comentarios anteriores, noté que la versión de Node.js instalada en mi máquina era la v14.17.5 y la versión de npm era la v7.19.1 . Refiriéndose a la búsqueda del historial de versiones y degradando npm a v6.14.14 (compatible con el nodo v14.17.5 ) se resolvió el problema.
Primero verifique su versión de Node.js: vaya a un indicador de cmd y
node -vSegún la versión, verifique la versión de node-sass e instálela:
npm node-sass@versionDe nodo-sass :
Node 16 - 6.0+ Node 15 - 5.0+ Node 14 - 4.14+ Node 13 - 4.13+, Node 12 - 4.12+ Node 11 - 4.10+, Node 10 - 4.9+, Node 8 - 4.5.3+, Node <8 - <5.0También tengo el mismo problema después de actualizar mi versión de npm. Parece un error de npm 7.19.1, y sugeriría cambiar a una versión anterior.
Puede consultar a continuación todas las versiones de npm
https://www.npmjs.com/package/npm?activeTab=versiones
Instale la versión deseada con este comando en la consola y sustituya "V" con su versión deseada:
npm install -g npm@"V"Hay varias formas de lidiar con esto:
Ignoralo. Es solo una advertencia y no afecta la instalación de módulos.
Ejecute npm ci para asegurarse de que su node_modules refleje el archivo de bloqueo, luego elimine package-lock.json y luego ejecute npm install (con la versión más nueva de npm ) para regenerar un package-lock.json . Debido a que todo en node_modules cumplirá con todos los requisitos, el único cambio de npm install será un archivo package-lock.json recién generado. Confirme la versión actualizada de package-lock.json en la imagen repo/Docker o lo que sea.
npm a una versión anterior en producción. Considere ejecutar la versión 6 de npm , ya que es lo que se incluye con la versión actual (al momento de escribir este artículo) de soporte a largo plazo (LTS) de Node.js. En el caso que se le pregunta en esta pregunta, imagino que puede omitir RUN npm -g install npm@7.19.1 del Dockerfile y, en su lugar, usar la versión de npm que está instalada con la imagen de Docker (que en este caso seguramente será npm@6 ya que eso es lo que viene con Node.js 14.x).
Si ya tiene una versión de npm instalada pero desea ejecutar un comando con una versión anterior de npm pero, por lo demás, conserva la versión más nueva, puede usar npx (que se envía con npm ) para hacerlo. Por ejemplo, npx npm@6 ci ejecutaría npm ci con la versión 6 de npm incluso si tiene instalada la versión 7.
Tuve un problema similar, pero la actualización de npm npm i -g npm en mi máquina antes de crear la imagen me lo resolvió. Es posible que aún reciba el mensaje de advertencia, pero el proceso de creación de la imagen no se detendrá.
TL;DR
Como sugirió Trott , está totalmente bien ignorar la advertencia. Para solucionar la advertencia o el problema, siga leyendo.
El problema/advertencia es con la línea:
RUN npm -g install npm@7.19.1Eliminar esta línea debería solucionar el problema o la advertencia.
Explicación
Idealmente , el bloqueo de paquete generado que forma parte de su repositorio de origen se genera con la versión npm < npm@7 que se envía con Node.js <= node@14.xx . Mi suposición proviene de su primera línea de Dockerfile .
FROM node:14.17.1-alpine3.13 AS builder Por ejemplo, Node.js LTS v14.17.1 se envía con npm@6.14.13 . Vea la lista completa de lanzamientos aquí .
npm@5 , npm@6 generan package-lock@v1 , que ahora es una versión heredada según esteenlace . Y npm@7 , que es la última versión, genera package-lock@v2 . Cuando lo haga: npm -g install npm@7.19.1 . Anula su package-lock@v1 existente con package-lock@v2 dando la advertencia en el proceso.
npm WARN old lockfile El archivo package-lock.json se creó con una versión anterior de npm`
El Dockerfile actualizado debería verse así:
FROM node:14.17.1-alpine3.13 AS builder WORKDIR /usr/src/app COPY package.json package-lock.json* ./ COPY ui-runner/package*.json ./ui-runner/ COPY .npmrc .npmrc COPY ui-runner/.npmrc ./ui-runner/.npmrc RUN npm ci --production --package-lock && \ npm ci --production --package-lock --prefix ./ui-runner RUN rm -f .npmrc && \ rm -f ui-runner/.npmrc FROM node:14.17.1-alpine3.13 WORKDIR /usr/src/app RUN apk update && apk add --no-cache curl bash RUN addgroup -g 1001 test && \ adduser -S -u 1001 -G test test RUN chown -R test /usr/src/app && \ chmod 755 /usr/src/app COPY --from=builder /usr/src/app /usr/src/app COPY . . RUN npm run build:docker USER test EXPOSE 3000 9183 CMD [ "npm", "run", "start:ui-runner" ]Una solución fácil para esto es usar NVM para administrar las versiones de su nodo. Especialmente en Linux, esto ahorra muchos problemas con los permisos de archivo, el desarrollo en diferentes entornos, etc. NPM recomienda esto en su documentación aquí .
Este error para mí se resolvió cambiando las versiones de Node.js con nvm,
nvm install 14 nvm use 14Siempre es fácil probar y cambiar a una versión de Node.js un poco más antigua o más nueva si se encuentra con problemas extraños de Node.js o npm.