npmWARNoldlockfilepackage-lock.json文件是用旧版本的npm创建的
我有一个 dockerfile 如下,但在RUN npm ci步骤中,有一个npm WARN old lockfile The package-lock.json file was created with an old version of 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" ]
回答
有几种方法可以解决这个问题:
-
忽略它。这只是一个警告,发生的
npm只是向package-lock.json文件添加信息。 -
在您的开发环境中
npm ci使用更新版本运行npm。它将发出警告并更新package-lock.json文件。将该版本提交到 repo/Docker 映像或其他任何内容。 -
npm在生产中降级到旧版本。考虑运行npm版本 6,因为这是 Node.js 当前(在撰写本文时)LTS 版本附带的版本。在这个问题中被问到的情况下,我想你可以RUN npm -g install npm@7.19.1从 Dockerfile 中省略 ,而是使用npm与 Docker 映像一起安装的版本(在这种情况下几乎可以肯定,npm@6因为这是 Node 附带的.js 14.x)。 -
在这里可能没有用,但为了完整起见,我会提到,如果您已经安装了一个版本
npm但想要使用旧版本运行一个命令npm但保留较新版本,您可以使用npx(随附npm)来执行那。使用该-p标志来指定npm您想要的版本。例如,即使您安装了版本 7 ,npx -p npm@6 npm ci也会npm ci以npm版本 6运行。
- 我想在#4 上感谢你。我对不同的项目有不同的 NPM 要求,这个命令让我在来回的过程中非常头疼。有趣的是你添加了它,说它在这里可能没有用,但它救了我哈哈
THE END
二维码