You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Build构建Angular应用执行npm run时报package.json错误

问题根因

Cloud Build拉取Source Repository的代码后,默认把/workspace作为所有构建步骤的执行目录,所有命令都会直接在这个路径下跑。你的package.json放在二级子目录里,命令自然扫不到:

  • 第一步的yarn install实际是在空的/workspace根目录执行的,只生成了个空的锁文件,根本没安装项目依赖,日志里的"success Saved lockfile"是假成功,不是真的装完了依赖
  • 第二步跑构建命令时,还是在根目录找package.json,找不到就直接抛错了
修复方案

给每个构建步骤加dir字段,指定package.json所在的相对路径就行——路径填相对于仓库根目录的位置,比如你的Angular项目在仓库根目录下的client/web二级目录,就填这个值。

修正后的cloudbuild.yaml参考:

steps:
- name: gcr.io/cloud-builders/npm
  args:
  - install
  id: Install angular
  entrypoint: yarn
  # 替换成你自己存放package.json的二级目录实际路径
  dir: client/web
- name: gcr.io/cloud-builders/npm
  args:
  - run
  - build
  - '--prod'
  id: Create build
  entrypoint: yarn
  # 和上一步用相同的工作目录
  dir: client/web
踩坑提醒
  • Cloud Build每个构建步骤都跑在独立容器里,别想着在某一步用cd切目录后让后面的步骤继承路径,切目录的操作只对当前步骤里的命令生效
  • 后续如果要加部署步骤(比如传到Firebase Hosting、Cloud Storage之类的),只要步骤需要读构建出来的dist产物,要么给步骤配同样的dir,要么写对产物的完整路径,不然还会报找不到文件的错

内容的提问来源于stack exchange,提问作者Anupam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 23:18:15