fix(web): 同步 package-lock.json ——修复 CI Staging Web 镜像构建失败 (npm ci EUSAGE) #2021

Merged
xiaoxia merged 1 commits from fix/web-ci-package-lock into develop 2026-09-23 17:16:20 +08:00
Owner

根因

PR#2020 合入后 CI Run #54590 Build Staging Web Image 失败,API/Worker 正常。

CI infra/docker/web.Dockerfile 在 builder 阶段执行的是 npm ci(读取 apps/web/package-lock.json),而 #2020 在 apps/web/package.json 中新增了 classnames ^2.5.1 / dayjs ^1.11.23 显式依赖时,只用 pnpm add 更新了 pnpm-lock.yaml,未同步 package-lock.json。

lockfile 中 dayjs 仍停留在 antd 传递引入的 1.11.21,与 ^1.11.23 不匹配:

npm error `npm ci` can only install packages when your package.json and package-lock.json are in sync.
npm error Invalid: lock file's dayjs@1.11.21 does not satisfy dayjs@1.11.23

三次重试(含一次 --no-cache)均在 builder 5/7 步(npm ci)以 exit code 1 退出。

修复

在 apps/web 目录执行 npm install,将 package-lock.json 同步:

  • node_modules/dayjs: 1.11.21 → 1.11.23
  • node_modules/classnames: 提升为顶级依赖(version 2.5.1,由 antd/icons 传递引入时版本一致,只是位置上移)
  • 其余 442 个依赖版本/完整性字段无变化

验证

  • npm ci 成功安装 444 包
  • tsc --noEmit 零错误
  • vite build 成功产出 dist/(TitleStylePanel/GeneratePage 等 chunk 正常)
  • eslint src/components/title src/pages/generate/components/title 零错误

影响

仅改 apps/web/package-lock.json 一个文件(+5/-3 行),不碰源码、CI、配置。修复后 Web 镜像构建应恢复正常,dev 环境 Watchtower 可继续滚动更新。

## 根因 PR#2020 合入后 CI Run #54590 **Build Staging Web Image** 失败,API/Worker 正常。 CI `infra/docker/web.Dockerfile` 在 builder 阶段执行的是 `npm ci`(读取 `apps/web/package-lock.json`),而 #2020 在 `apps/web/package.json` 中新增了 `classnames ^2.5.1` / `dayjs ^1.11.23` 显式依赖时,只用 `pnpm add` 更新了 `pnpm-lock.yaml`,**未同步 package-lock.json**。 lockfile 中 dayjs 仍停留在 antd 传递引入的 `1.11.21`,与 `^1.11.23` 不匹配: ``` npm error `npm ci` can only install packages when your package.json and package-lock.json are in sync. npm error Invalid: lock file's dayjs@1.11.21 does not satisfy dayjs@1.11.23 ``` 三次重试(含一次 `--no-cache`)均在 builder 5/7 步(npm ci)以 exit code 1 退出。 ## 修复 在 apps/web 目录执行 `npm install`,将 `package-lock.json` 同步: - `node_modules/dayjs`: 1.11.21 → **1.11.23** - `node_modules/classnames`: 提升为顶级依赖(version 2.5.1,由 antd/icons 传递引入时版本一致,只是位置上移) - 其余 442 个依赖版本/完整性字段无变化 ## 验证 - [x] `npm ci` 成功安装 444 包 - [x] `tsc --noEmit` 零错误 - [x] `vite build` 成功产出 dist/(TitleStylePanel/GeneratePage 等 chunk 正常) - [x] `eslint src/components/title src/pages/generate/components/title` 零错误 ## 影响 仅改 `apps/web/package-lock.json` 一个文件(+5/-3 行),不碰源码、CI、配置。修复后 Web 镜像构建应恢复正常,dev 环境 Watchtower 可继续滚动更新。
xiaoxia added 1 commit 2026-09-23 16:51:12 +08:00
fix(web): 同步 package-lock.json——classnames/dayjs 显式依赖导致 npm ci EUSAGE (#2020 后续)
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m24s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m35s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m37s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m14s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 3m38s
AI Code Review / AI Code Review (pull_request) Successful in 6m50s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 7m0s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 8m17s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 10m37s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 19m3s
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m1s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 6m32s
f2b80ad8e5
PR#2020 在 apps/web/package.json 中新增了 classnames ^2.5.1 和 dayjs ^1.11.23
的显式依赖(此前它们是 antd/@ant-design/icons 的传递依赖),但仅用 pnpm add
更新了 pnpm-lock.yaml,未同步更新 CI(web.Dockerfile)实际使用的 package-lock.json。
lockfile 中 dayjs 仍停留在 1.11.21(由 antd 传递引入),npm ci 严格校验版本不匹配:

  npm error `npm ci` can only install packages when your package.json
    and package-lock.json ... are in sync.
  npm error Invalid: lock file's dayjs@1.11.21 does not satisfy dayjs@1.11.23

导致 CI Run #54590 Build Staging Web Image 连续三次(含一次 --no-cache)失败,
而 API/Worker 镜像构建不受影响。

修复:在 apps/web 下重新执行 npm install,将 package-lock.json 与 package.json
同步到 dayjs@1.11.23 / classnames@2.5.1 作为顶级依赖。本地已验证:
- npm ci 成功安装 444 包
- tsc --noEmit 零错误
- vite build 成功产出 dist/
- eslint 通过
auto-approve-bot approved these changes 2026-09-23 16:52:49 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
auto-approve-bot approved these changes 2026-09-23 16:52:49 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。

🚀 预览环境已部署

项目 详情
PR号 #2021
预览链接 https://pr-2021.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2021 | | 预览链接 | [https://pr-2021.preview.xiaoxiajianji.com](https://pr-2021.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia merged commit 493e85ce0e into develop 2026-09-23 17:16:20 +08:00
xiaoxia deleted branch fix/web-ci-package-lock 2026-09-23 17:16:23 +08:00

🗑️ 预览环境已清理

PR #2021 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #2021 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.