函数部署失败报错:yarn: not found 问题排查求助
Cloud Functions部署全量失败:yarn未找到+自动执行build脚本的原因及解决
问题现象
所有开发/生产环境的Cloud Functions部署失效,无论是手动部署单个函数还是通过Cloud Build触发器批量部署,均触发以下错误:
Build failed: > functions@0.1.0 build > yarn build-deps && tsc sh: 1: yarn: not found; Error ID: 1a2262f3
其中functions@0.1.0是代码库中的包,yarn build-deps && tsc是package.json中定义的build脚本。错误发生在云端部署的functions.v1.OperationMetadataV1 UPDATE_FUNCTION环节,而非本地或Cloud Build构建阶段。
为什么部署会自动执行build脚本?
Cloud Functions的云端部署流程默认会触发构建操作,触发条件包括:
- 代码使用TypeScript这类需要编译的语言,云端需要将源码转译为运行时可执行的代码
- package.json中存在
build脚本时,云端会自动调用该脚本完成构建 - 未在部署命令中添加
--no-build参数关闭云端构建(默认开启)
解决步骤
1. 替换build脚本中的yarn为npm
Cloud Functions的云端构建环境默认仅预装npm,未包含yarn,因此直接调用yarn会提示未找到。修改package.json的build脚本:
{ "scripts": { "build": "npm run build-deps && tsc" } }
同时确保build-deps脚本中的依赖安装命令也使用npm(比如npm install而非yarn install)。
2. 验证部署流程
- 先尝试部署一个最简测试函数,确认修改后的脚本可以正常执行
- 如果是通过Cloud Build触发器部署,检查触发器配置中是否有额外的构建命令,确保统一使用npm
3. 清理异常缓存(针对突发全量失效)
之前高频调用时的部署失败可能导致云端构建缓存或函数配置异常,可通过以下操作恢复:
- 在Cloud Console中找到对应函数,删除其关联的临时构建资源(如GCS中的构建缓存桶文件)
- 重新触发部署,让云端重新生成干净的构建环境
额外排查点
- 关于同期GCS存储量骤增:检查是否是云端构建产生的大量临时日志或构建产物导致,清理后可释放存储,但不影响部署问题的解决
内容的提问来源于stack exchange,提问作者Charles Parker
相关产品推荐
相关产品推荐

