在cloudbuild.yaml中执行npm命令部署React应用至GCS时遇npm未找到问题
问题解决:Cloud Build执行npm命令提示"npm: not found"及部署配置修正
核心结论
完全可以在cloudbuild.yaml中运行npm install和npm run build命令,你遇到的错误是因为使用的bash镜像未预装Node.js环境,导致找不到npm命令。
修正后的cloudbuild.yaml配置
steps: # 使用预装Node.js的官方镜像执行依赖安装与构建 - name: node:20 script: | npm install --force - name: node:20 script: | npm run build # 用Cloud SDK镜像上传构建产物到GCS存储桶 - name: gcr.io/google.com/cloudsdktool/cloud-sdk entrypoint: gcloud args: - "storage" - "cp" - "/workspace/dist/*" - "gs://your-bucket-name" # 替换为你的实际存储桶名称 timeout: 1200s options: logging: CLOUD_LOGGING_ONLY
关键修正点说明
- 镜像替换:将
bash镜像换成node:20(或匹配你项目Node版本的镜像,如node:18),这类镜像默认包含Node.js和npm,可直接执行相关命令。 - 路径修正:Cloud Build会自动把你的代码拉取到容器的
/workspace目录,构建生成的dist目录路径为/workspace/dist,而非根目录的/dist。 - 语法修正:原配置中的引号转义(
\")属于冗余写法,直接使用标准YAML语法即可。
可选优化:合并步骤减少构建时间
如果想简化步骤,可将依赖安装与构建合并为一个步骤:
steps: - name: node:20 script: | npm install --force npm run build - name: gcr.io/google.com/cloudsdktool/cloud-sdk entrypoint: gcloud args: - "storage" - "cp" - "/workspace/dist/*" - "gs://your-bucket-name" timeout: 1200s options: logging: CLOUD_LOGGING_ONLY
内容的提问来源于stack exchange,提问作者Elmer A. Chacon
相关产品推荐
相关产品推荐

