Skip to content

fix: 固定 frontend Dockerfile 中的 pnpm 版本 - #121

Open
dajiaohuang wants to merge 1 commit into
jihe520:mainfrom
dajiaohuang:fix/docker-frontend-pnpm-pin
Open

fix: 固定 frontend Dockerfile 中的 pnpm 版本#121
dajiaohuang wants to merge 1 commit into
jihe520:mainfrom
dajiaohuang:fix/docker-frontend-pnpm-pin

Conversation

@dajiaohuang

Copy link
Copy Markdown

改动

frontend/Dockerfile 安装 pnpm 时未指定版本,全新环境(无构建缓存)会装到当时的最新版 pnpm。新版 pnpm 会依据 package.jsonpackageManager 字段切换到自己声明的版本,并到 pnpm-lock.yaml 中校验 @pnpm/exe 的完整性;现有 lockfile 不含该记录,pnpm install --frozen-lockfile 直接失败:

Error: ERR_PNPM_PNPM_ENGINE_IDENTITY_UNVERIFIABLE
  × verify the package manager identity
  ╰─▶ Cannot verify the identity of the @pnpm/exe.linux-x64 native binary:
      it is missing from pnpm-lock.yaml.

把 pnpm 固定到 packageManager 声明的 10.6.3(与 CLAUDE.md 中「包管理用 pnpm,版本见 packageManager 字段」一致),容器内的 pnpm 与声明版本相同,不再触发版本切换和完整性校验。

验证

  • 改动前 docker build --no-cache 复现上述 ERR_PNPM_PNPM_ENGINE_IDENTITY_UNVERIFIABLE
  • 改动后 docker build --no-cache 通过,pnpm install --frozen-lockfile 正常结束。
  • 运行镜像后 curl localhost:5173 返回 HTTP 200,Vite dev server 正常启动。

修复 #118

frontend/Dockerfile 安装 pnpm 时未指定版本,全新环境下会装到最新的 pnpm。
新版 pnpm 会依据 package.json 的 packageManager 字段下载 @pnpm/exe,并到
pnpm-lock.yaml 中校验其完整性;现有 lockfile 不含该记录,导致
`pnpm install --frozen-lockfile` 报 ERR_PNPM_PNPM_ENGINE_IDENTITY_UNVERIFIABLE
而构建失败。

固定为 packageManager 声明的 10.6.3 后,容器内的 pnpm 与声明版本一致,
不再触发版本切换和完整性校验。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant