无法向Firebase Firestore添加数据,WebChannelConnection RPC报错求助
Firestore WebChannelConnection RPC写入错误排查方案
向Firebase Firestore添加数据时触发@firebase/firestore: Firestore (10.7.0): WebChannelConnection RPC错误,已确认是应用与数据库的连接问题,尝试过升级/降级Firestore库,问题仍存在,无法完成数据写入。
写入数据的函数代码
addProduct = async (activeI, brand, productId, qua, expyea) => { try{ await addDoc(collection(db, 'tasks'), { brandName: brand, activeIngredient: activeI, created: Timestamp.now(), proId: productId, quantity: qua, // expiryMonth: expmon, expiryYear: expyea }) alert("added") } catch (err) { alert("Please Fill in All Fields") } }
完整错误信息
[2023-12-28T11:19:26.325Z] @firebase/firestore: Firestore (10.7.0): WebChannelConnection RPC 'Write' stream 0x45cffe61 transport errored: {"defaultPrevented": false, "g": {"A": true, "J": null, "T": [Circular], "g": {"A": 3, "Aa": 600000, "B": null, "C": 0, "D": "gsessionid", "G": false, "Ga": "jxDdqL3iKu1tDB1vRPlPg6tiBTwIVTzNvXfLVqy8Rv0", "H": 0, "I": [O], "Ia": -1, "J": true, "Ja": 12, "Ka": true, "L": "nt9JDa2NaUIccddfKv4dfA", "M": 45000, "Ma": [yd], "N": true, "P": true, "R": false, "T": 361, "W": [Object], "X": 0, "Y": 77536, "aa": "https://firestore.googleapis.com/google.firestore.v1.Firestore/Write/channel", "ca": true, "da": 4, "ea": true, "eb": 5000, "fb": false, "g": null, "gb": false, "h": [fe], "hb": 2, "i": [td], "ib": 1, "j": [Array], "kb": 10000, "l": [Tb], "m": null, "o": null, "pa": null, "qa": [Object], "ra": undefined, "s": null, "sa": "", "ta": undefined, "u": null, "ua": 8, "v": null, "ya": undefined, "za": [O]}, "h": {"database": "projects/pharmacy-app-a81d8/databases/(default)"}, "i": {"g": [Object], "h": 4, "src": [Circular]}, "j": {"g": [Circular]}, "l": "https://firestore.googleapis.com/google.firestore.v1.Firestore/Write/channel", "o": undefined, "s": false, "v": true}, "status": 1, "target": {"A": true, "J": null, "T": [Circular], "g": {"A": 3, "Aa": 600000, "B": null, "C": 0, "D": "gsessionid", "G": false, "Ga": "jxDdqL3iKu1tDB1vRPlPg6tiBTwIVTzNvXfLVqy8Rv0", "H": 0, "I": [O], "Ia": -1, "J": true, "Ja": 12, "Ka": true, "L": "nt9JDa2NaUIccddfKv4dfA", "M": 45000, "Ma": [yd], "N": true, "P": true, "R": false, "T": 361, "W": [Object], "X": 0, "Y": 77536, "aa": "https://firestore.googleapis.com/google.firestore.v1.Firestore/Write/channel", "ca": true, "da": 4, "ea": true, "eb": 5000, "fb": false, "g": null, "gb": false, "h": [fe], "hb": 2, "i": [td], "ib": 1, "j": [Array], "kb": 10000, "l": [Tb], "m": null, "o": null, "pa": null, "qa": [Object], "ra": undefined, "s": null, "sa": "", "ta": undefined, "u": null, "ua": 8, "v": null, "ya": undefined, "za": [O]}, "h": {"database": "projects/pharmacy-app-a81d8/databases/(default)"}, "i": {"g": [Object], "h": 4, "src": [Circular]}, "j": {"g": [Circular]}, "l": "https://firestore.googleapis.com/google.firestore.v1.Firestore/Write/channel", "o": undefined, "s": false, "v": true}, "type": "c"}
排查步骤
- 检查Firestore安全规则:确认
tasks集合的写入权限是否开放。测试阶段可临时设置为允许所有写入(上线后务必修改为严格权限):rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /tasks/{document} { allow read, write: if true; } } } - 验证Firebase初始化配置:核对
db实例的初始化代码,确保API密钥、项目ID、存储桶等参数与Firebase控制台完全一致。 - 排查网络限制:确认应用所在网络可以访问Firestore服务,比如关闭代理、防火墙,或切换至手机流量测试。
- 完善错误捕获逻辑:当前catch块仅提示固定信息,修改为打印具体错误详情,便于定位问题:
catch (err) { console.error("写入失败详情:", err); alert(`写入失败: ${err.message}`); } - 检查数据有效性:确认传入的
activeI、brand、qua等参数类型正确,比如quantity应为数字而非字符串;同时确保Timestamp已从firebase/firestore正确导入。 - 测试基础连接:先尝试执行简单的读操作(比如读取
tasks集合的一条数据),验证应用与Firestore的基本连接是否正常。
内容的提问来源于stack exchange,提问作者Linda Sabei
相关产品推荐
相关产品推荐

