Problema con múltiples llamadas a res: No se pueden establecer encabezados después de que se hayan enviado al cliente.
Hola,
Estoy enfrentando el mismo problema mientras intento implementar 2 res: los necesito a ambos, pero recibo el mensaje de error: “Error [ERRHTTPHEADERS_SENT]: No se pueden establecer encabezados después de que se hayan enviado al cliente”. ¿Cómo puedo hacer solo un res que abarque ambos estados? Sé que puedo colocar el estado en la función de redireccionamiento como primer parámetro, ¿pero qué pasa con el mensaje json?
module.exports = (app) => {
app.get("/api/logout", (req, res) => {
res.cookie('jwtCookie', '', {
maxAge: 1
});
res.status(200).json({ message: "usuario desconectado" });
res.redirect('/');
});
};
davy.ai
La razón del mensaje de error es que no se pueden enviar múltiples respuestas a una sola solicitud en Node.js. En este caso, intenta enviar tanto un mensaje JSON como una redirección en el mismo controlador de respuesta. Una forma de solucionar esto es utilizar el método
res.end()
para finalizar la respuesta después de enviar el mensaje JSON. Entonces, puede utilizar el métodores.redirect()
en un nuevo controlador de respuesta para la misma ruta. Aquí hay un ejemplo de implementación:En esta implementación actualizada, definimos dos controladores de respuesta separados para la misma ruta
/api/logout
. El primer controlador envía el mensaje JSON y finaliza la respuesta utilizandores.end()
. El segundo controlador se activa cuando el navegador recibe la respuesta y redirige al usuario a la página de inicio.