docker npm WARN old lockfile package-lock.json文件是用旧版本的npm创建的

w46czmvw  于 2023-04-20  发布在  Docker
关注(0)|答案(8)|浏览(391)

我有一个dockerfile,如下所示,当我执行它时,我得到一个警告,我无法在RUN npm ci步骤中弄清楚:
npm WARN old lockfile package-lock.json文件是用旧版本的npm创建的
我尝试了npm install而不是npm ci,并添加了--package-lock标志,但我仍然得到这个警告。有没有办法解决这个问题?或者我应该忽略它?

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 lockfile

这是我的Dockerfile。

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" ]
t9eec4r0

t9eec4r01#

有几种方法可以处理此问题:
1.忽略它。这只是一个警告,不影响模块的安装。
1.运行npm install --package-lock-only(使用较新版本的npm)以重新生成package-lock.json。将package-lock.json的更新版本提交到repo/Docker映像或其他文件。
1.在生产环境中将npm降级到旧版本。(截至本文撰写时)长期支持(LTS)版本的Node.js。在这个问题中被问及的情况下,我想您可以从Dockerfile中删除RUN npm -g install npm@7.19.1,而使用随Docker镜像安装的npm版本(在这种情况下,几乎可以肯定是npm@6,因为这是Node.js 14.x附带的)。
1.如果您已经安装了npm的一个版本,但希望在旧版本的npm上运行一个命令,否则保留新版本,您可以使用npx(随npm提供)来执行此操作。例如,即使您安装了版本7,npx npm@6 ci也会在npm版本6上运行npm ci

yrdbyhpb

yrdbyhpb2#

我也遇到过类似的问题,但是在构建镜像之前,在我的机器上升级npm npm i -g npm解决了这个问题。你可能仍然会收到警告消息,但镜像构建过程不会停止。

v09wglhw

v09wglhw3#

一个简单的解决方案是使用NVM来管理你的节点版本。特别是在Linux上,这节省了很多文件权限的麻烦,在不同的环境中开发,等等。NPM在他们的文档here中推荐了这一点。
这个错误对我来说是通过使用nvm切换Node.js版本来解决的,

nvm install 14
nvm use 14

如果你遇到奇怪的Node.js或npm问题,尝试切换到稍微旧一点或新一点的Node.js版本总是很容易的。

but5z9lq

but5z9lq4#

我在升级我的npm版本后也遇到了同样的问题。这似乎是npm 7.19.1的bug,我建议降级到旧版本。
你可以在下面查看所有的npm版本
https://www.npmjs.com/package/npm?activeTab=versions
在控制台中使用以下命令安装所需版本,并将“V”替换为所需版本:

npm install -g npm@"V"
oxiaedzo

oxiaedzo5#

TL;DR

正如Trott所建议的,忽略警告是完全可以的。要修复警告/问题,请继续阅读。
问题/警告与以下行有关:

RUN npm -g install npm@7.19.1

删除此行应可修复问题/警告。

说明

生成的package-lock是源代码库的一部分,* 理想情况下 * 是用Node.js〈= node@14.x.x附带的npm版本〈npm@7生成的。我的猜测来自你的第一行Dockerfile

FROM node:14.17.1-alpine3.13 AS builder

例如,Node.js LTS v14.17.1npm@6.14.13一起提供。请参阅完整的发布列表here
npm@5npm@6生成package-lock@v1,它现在是根据link的遗留版本。而最新版本npm@7生成package-lock@v2。当您这样做时:npm -g install npm@7.19.1。它覆盖了您现有的package-lock@v1package-lock@v2在此过程中发出警告。npm WARN old lockfile package-lock.json文件是用旧版本的npm创建的
更新后的Dockerfile如下所示:

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" ]
bq8i3lrv

bq8i3lrv6#

我也遇到了类似的问题。在阅读了之前的评论后,我注意到我机器上安装的Node.js版本是v14.17.5,npm版本是v7.19.1。参考version history lookup并将npm降级为v6.14.14(与节点v14.17.5兼容)解决了问题。

w80xi6nr

w80xi6nr7#

首先检查您的Node.js版本:转到cmd提示符并

node -v

根据版本,检查 node-sass 版本并安装它:

npm node-sass@version

从 * node-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.0
aor9mmx1

aor9mmx18#

我用过的Strapi v4也有类似的问题:
(1)

nvm use 16.15.1

(old为14.X.X)
(2)

npm rebuild
npm install

现在似乎工作。

相关问题