GCP Cloud Build配置npm --prefix仍找不到指定package.json报错求助
问题解决方案
错误根因
你配置的--prefix参数未被npm正确识别,原因是Cloud Build执行命令时,args数组的每个元素会作为独立参数传给入口程序,你将--prefix和路径./ui写在同一个字符串中,npm无法解析该参数,因此依旧默认读取根目录/workspace/package.json,触发文件不存在报错。
修复方案
方案1:修正--prefix参数写法
将--prefix和路径拆分为独立的数组元素即可,修正后的cloudbuild.yml配置如下:
steps: - id: 'APP INSTAL NPM' name: node:$_NODE_VERSION entrypoint: npm args: ['install', '--prefix', './ui'] - id: 'APP BUILD PROCESS WITH NODE NPM' name: node:$_NODE_VERSION entrypoint: npm args: ['run', 'build', '--prefix', './ui'] timeout: 6000s # 20 minute
方案2:指定step工作目录(更稳妥,避免参数传错)
直接给每个node相关step指定工作目录为./ui,无需额外传递--prefix参数,配置示例:
steps: - id: 'APP INSTAL NPM' name: node:$_NODE_VERSION entrypoint: npm dir: './ui' args: ['install'] - id: 'APP BUILD PROCESS WITH NODE NPM' name: node:$_NODE_VERSION entrypoint: npm dir: './ui' args: ['run', 'build'] timeout: 6000s # 20 minute
可选验证步骤
如果修改后依旧报错,可以添加临时step确认ui目录和package.json存在:
- id: '验证ui目录结构' name: alpine:latest entrypoint: ls args: ['-la', './ui']
执行后查看该step的输出,确认package.json文件存在即可排除代码拉取路径错误的问题。
内容的提问来源于stack exchange,提问作者Arun
相关产品推荐
相关产品推荐

