Firebase Hosting部署失败:无法获取Cloud Run服务求助
解决Firebase Hosting部署Cloud Run重写规则报错的调试思路
1. 核对Cloud Run服务信息准确性
- 确认
firebase.json重写规则里的项目ID、区域、服务名和实际Cloud Run服务完全一致:- 执行
gcloud run services list --project=paths-e9ce1,检查输出的服务名是否为paths-backend,区域是否是us-central1 - 注意Cloud Run服务名、区域大小写敏感,排查是否存在拼写错误(比如把
us-central1写成us-central)
- 执行
2. 检查Firebase CLI的权限与项目关联
- 验证当前登录账号的权限:
- 执行
firebase login:list查看活跃账号,确保该账号在paths-e9ce1项目中拥有Cloud Run Viewer或更高权限(比如Cloud Run Admin) - 权限不足的话,去Google Cloud控制台IAM页面给账号添加对应角色
- 执行
- 确认Firebase CLI关联正确项目:
- 执行
firebase use查看当前项目,若不是paths-e9ce1,执行firebase use paths-e9ce1切换
- 执行
3. 排查CLI版本与网络问题
- 升级Firebase CLI到最新版:
- 执行
npm install -g firebase-tools,旧版本可能存在API兼容性问题
- 执行
- 验证Cloud Run API连通性:
- 执行
gcloud run services describe paths-backend --project=paths-e9ce1 --region=us-central1,如果能返回服务信息,说明网络和权限正常;如果失败,根据错误提示排查防火墙、代理等问题
- 执行
4. 确认项目关联与服务访问权限
- 确保Firebase项目和Cloud Run服务属于同一个Google Cloud项目,检查两者项目ID均为
paths-e9ce1 - 临时开启Cloud Run服务的未认证访问测试:
- 执行
gcloud run services add-iam-policy-binding paths-backend --member="allUsers" --role="roles/run.invoker" --project=paths-e9ce1 --region=us-central1,之后重新部署,排除权限拦截导致的服务获取失败
- 执行
5. 检查firebase.json配置格式
- 确认重写规则的JSON格式正确,示例如下:
{ "hosting": { "public": "public", "rewrites": [ { "source": "/api/**", "run": { "serviceId": "paths-backend", "region": "us-central1" } } ] } }
- 排查是否存在多余逗号、引号不匹配等语法错误,格式问题可能导致部署时解析失败,进而触发服务获取报错
内容的提问来源于stack exchange,提问作者Earl J. Wagner
相关产品推荐
相关产品推荐

