Estoy tratando de usar el SDK estándar de Firebase para la base de datos en tiempo real, y este misterioso error sigue apareciendo en acciones de lectura/escritura aparentemente aleatorias. No puedo detectar ninguna función recursiva que lo cause. Cualquier idea sobre lo que esto podría relacionarse es muy apreciada.
ERROR Error: Uncaught (in promise): RangeError: Maximum call stack size exceeded RangeError: Maximum call stack size exceeded at ChildrenNode.isLeafNode (index.esm2017.js:5403) at ChildrenNode.equals (index.esm2017.js:5677) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at ChildrenNode.equals (index.esm2017.js:5682) at resolvePromise (zone.js:1213) at zone.js:1120 at asyncGeneratorStep (asyncToGenerator.js:6) at _throw (asyncToGenerator.js:29) at ZoneDelegate.invoke (zone.js:372) at Object.onInvoke (core.js:28673) at ZoneDelegate.invoke (zone.js:371) at Zone.run (zone.js:134) at zone.js:1276 at ZoneDelegate.invokeTask (zone.js:406)
Una cosa que sí sé es que cuando no uso onValue, no aparece el error. Así es como estoy tratando de convertir la devolución de llamada en un observable:
listenToOne(proposalId: string): Observable<SuccessOrFail<Proposal>> { let unsub: Unsubscribe; const subject = new BehaviorSubject<SuccessOrFail<Proposal>>(Result.fail(`Not Yet`)); get(this.getProposalRef(proposalId)).then(snapshot => { const proposalRef = ref(this.db, `proposals/${Object.keys(snapshot.val())[0]}`); unsub = onValue(proposalRef, snapshot => { const spec: ProposalBuildSpec = snapshot.val(); subject.next(Result.success(this.proposalMapper.toDomain(spec))); }); }); return subject.pipe(finalize(() => unsub())); }
He probado toneladas de variaciones pero nada ha funcionado. Veo que hay muchas preguntas publicadas sobre RangeError: se excedió el tamaño máximo de la pila de llamadas, pero nada relacionado con estos misteriosos ChildrenNode.equals.
¡Cualquier ayuda es muy apreciada! ¡Gracias!