You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境Firebase项目升级依赖后触发重试超限等错误

Firebase依赖升级后Firestore监听报错问题

依赖升级情况

  • firebase-admin:从^9.2.0升级到^11.5.0
  • firebase-functions:从^3.21.2升级到^4.2.0

报错信息

主报错

Error: Exceeded maximum number of retries allowed. at QueryWatch.<anonymous> (/workspace/app/orders/makeOrderDone.function.js:179:27) at QueryWatch.closeStream (/workspace/node_modules/@google-cloud/firestore/build/src/watch.js:226:18) at /workspace/node_modules/@google-cloud/firestore/build/src/watch.js:335:18 at runMicrotasks (<anonymous>) at processTicksAndRejections (internal/process/task_queues.js:95:5)

前置报错

Error: A backoff operation is already in progress. at QueryWatch.<anonymous> (/workspace/app/orders/makeOrderDone.function.js:169:35) at QueryWatch.closeStream (/workspace/node_modules/@google-cloud/firestore/build/src/watch.js:226:18) at /workspace/node_modules/@google-cloud/firestore/build/src/watch.js:335:18 at runMicrotasks (<anonymous>) at processTicksAndRejections (internal/process/task_queues.js:95:5) at runNextTicks (internal/process/task_queues.js:64:3) at processTimers (internal/timers.js:497:9)

补充背景

本次升级是为了使用preferRest选项,目前已禁用该选项,但报错仍未消失。

相关代码片段

db
.collection("Orders")
.doc(orderId)
.collection("Order_Items")
.where("order_status_val", "==", 1)
.onSnapshot(() => {
  // 内部包含业务逻辑及另一个嵌套的onSnapshot监听
})

问题分析与解决建议

  1. 嵌套监听的资源泄漏风险:代码中存在嵌套的onSnapshot监听,新版本Firestore SDK对监听生命周期管理更严格,若外层监听触发频繁,易导致内层监听未正确销毁,引发重试冲突。

    • 在外层监听回调中,先销毁之前创建的内层监听,再生成新的监听实例
    • 使用unsubscribe方法手动管理监听生命周期,避免重复注册
  2. 跨版本SDK兼容性问题:从v9到v11的跨版本升级,Firestore底层监听机制(如重试逻辑、连接管理)有变更,原有代码模式未适配。

    • 尝试逐步升级版本,先过渡到v10.x版本,排查是否为特定版本引入的问题
    • 检查项目其他依赖是否与新版本Firebase SDK存在冲突,比如@google-cloud/firestore的隐式版本差异
  3. 监听重试逻辑冲突:报错提示同一监听实例的重试操作并发冲突,新版本SDK重试策略优化后,原有重复注册监听的行为触发了报错。

    • 确保每个onSnapshot监听仅被调用一次,避免同一查询重复注册监听
    • 为监听添加错误处理回调,错误发生时主动销毁监听,按需重新创建

内容的提问来源于stack exchange,提问作者Omar Dulaimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:45:23