Firebase + GCP Debug 是一个面向 Firebase 与 Google Cloud 问题排查的技能,主要借助 firebase 和 gcloud 两个命令行工具完成调试工作。它适合在调查 Cloud Functions(v1/v2)、Firestore、Auth、Storage 等服务异常时使用。
用途 该技能用于对 Firebase 与 GCP 相关问题进行分诊与定位,帮助区分问题发生在本地模拟器还是已部署环境(生产/预发),并沿着日志与配置线索找到根因。
主要能力
- 分诊流程:确定排查目标(本地模拟器 vs 已部署环境)、识别 projectId(通常来自 .firebaserc / firebase.json)、确定函数或服务名称、区域以及失败的确切时间戳(尽量使用 UTC),并收集完整错误文本与请求 ID / 追踪 ID。
- 本地模拟器工作流:确认工具版本(node --version、firebase --version);按需只启动所需模拟器以减少噪音,例如 firebase emulators:start --only functions,firestore;为 Node 调试启用检查器,例如 firebase emulators:start --only functions --inspect-functions;复现问题并观察模拟器日志;当缺陷依赖 Firestore 规则或数据时,使用已知数据集运行,并在仓库支持时使用模拟器的导入/导出功能(--import / --export-on-exit)。
- 已部署(生产)工作流:先验证认证与项目选择,Firebase CLI 使用 firebase login:list、firebase projects:list、firebase use <projectId>,gcloud 使用 gcloud auth list、gcloud config set project <projectId>;再确定运行时版本(v1 还是 v2),优先使用 firebase functions:list,若为 Functions v2,日志通常位于 Cloud Run 下(Cloud Logging 中 resource.type="cloud_run_revision")。
- 读取日志(Cloud Logging):使用精确过滤条件,限定项目、资源类型、服务/函数名称与时间窗口。Functions v2 / Cloud Run 服务日志示例:gcloud logging read 'resource.type="cloud_run_revision" AND resource.labels.service_name="<service>" AND timestamp>="<ISO8601>"' --limit 100;Functions v1 日志示例:gcloud logging read 'resource.type="cloud_function" AND resource.labels.function_name="<function>" AND timestamp>="<ISO8601>"' --limit 100。可添加 severity>=ERROR 缩小失败范围;若有 trace id,可添加 trace="projects/<projectId>/traces/<traceId>"。
- Firestore/Auth/Storage 快速检查:Firestore 权限问题需确认规则目标(模拟器还是已部署),检查 PERMISSION_DENIED 日志与受影响的文档路径;索引错误通常会在错误信息中包含创建缺失索引的控制台链接;Auth 需校验令牌的 audience/project 是否匹配(aud、iss、project_id)。
- 项目包引用(可选):若仓库在 .skills-hub/firebase/references/ 下提供项目专属的 Firebase 说明,可按需阅读。核心排查保持通用,仓库专属快捷方式与业务文档放在项目包中。
使用方式 通过 firebase 与 gcloud CLI 执行上述命令完成排查。执行说明:任何访问 Firebase/GCP API 的命令都可能需要网络访问、认证上下文或沙箱审批,具体取决于宿主代理;如果代理对 CLI 或网络调用有门控,需先开启相应访问权限再运行 firebase 或 gcloud。
适用场景 适用于排查 Firebase 与 Google Cloud 的各类问题,包括本地模拟器调试、Cloud Functions v1/v2 日志分析、Firestore 权限与索引问题、Auth 令牌校验以及 Storage 相关检查。
限制与安全
- 切勿将服务账号 JSON 密钥粘贴到聊天中;应使用文件路径并遮盖敏感字段。
- 建议使用最小权限角色与短期凭据。
- 关于具体收费、价格、平台支持范围等信息,资料中暂未提供。