我刚刚升级到npm @ 5.我现在有一个package-lock.json文件,其中包含package.json中的所有内容.我希望,当我运行时npm install,将从锁定文件中提取依赖版本以确定应该在我的node_modules目录中安装什么.奇怪的是它实际上最终修改并重写了我的package-lock.json文件.
例如,锁定文件的typescript指定为版本2.1.6.然后,在npm install命令之后,版本更改为2.4.1.这似乎打败了锁定文件的整个目的.
我错过了什么?如何让npm真正尊重我的锁文件?
网上有很多人用不同的方式问同样的问题,但没有明确的答案。任何人都可以理解到足以解释为什么docker build当package-lock.json应用程序中存在文件时会失败,而当文件不存在时会成功运行吗?貌似跟npm有关,但是不清楚。
每个人都说删除package-lock.json,但它存在是有原因的。
注意: npm install在我的本地机器上工作正常,只是在 docker 容器中失败。
如果我有这个 Dockerfile:
# First Stage: Builder
FROM node:13.12.0-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
Run Code Online (Sandbox Code Playgroud)
并运行这个:
docker build -t container-tag ./
Run Code Online (Sandbox Code Playgroud)
我明白了:
npm WARN tar ENOENT: no such file or directory, open '/app/node_modules/.staging/eventsource-c2615740/example/index.html'
npm WARN tar ENOENT: no such file or directory, open '/app/node_modules/.staging/eventsource-c2615740/example/sse-client.js'
npm WARN tar ENOENT: no such file or directory, open …Run Code Online (Sandbox Code Playgroud)