he estado teniendo este error
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client at ServerResponse.setHeader (_http_outgoing.js:533:11)Después de agregar una actualización del código de Firebase en un socket.io
io.on('connection', socket => { ... socket.once('myEvent', async (dataToSend) => { try { await db .collection('myCollection') .doc('myDoc') .update({keyToUpdate: dataToSend}) } catch (err) { console.log(err) } } }Pensé que el problema era con el zócalo, así que hice la misma lógica pero con una ruta POST fuera del zócalo y obtuve el mismo error, intenté agregar un retorno pero no funcionó
Sospecho que podría deberse a que esta función es una promesa y no estoy manejando bien el comportamiento asíncrono, o porque el servidor está actuando como una transmisión gracias a socket.io y a esta función de firebase no le gusta eso.
Tengo otras funciones de base de fuego en el código, pero son solicitudes de obtención (.onSnapshot()), el error solo ocurre con la adición de datos de funciones de base de fuego (.set(), .add(), .update())
Agradecería alguna ayuda aquí, gracias.
Solucionado, no sabía exactamente cómo funciona onSnapshot, por lo que cada vez que se realizaba una actualización activaba su devolución de llamada que enviaba información y provocaba el error.
Cambiado a .get().then() y eso lo arregló