ECONNRESET es un error de red de Node.js que ocurre cuando una conexión TCP es cerrada forzosamente por el par remoto mientras los datos aún se están transfiriendo. A diferencia de ECONNREFUSED (conexión rechazada antes de comenzar), ECONNRESET ocurre durante la conexión.
Por qué ocurre
- •El servidor remoto se bloquea o reinicia mientras una solicitud está en progreso.
- •Un balanceador de carga o proxy tiene un timeout de inactividad más corto que tu cliente.
- •El servidor envía un paquete TCP RST para cerrar la conexión abruptamente.
- •Equipos de red (firewalls, NAT) descartan una conexión inactiva.
Ejemplos
Código que causa el error
const http = require("http");
const req = http.get("http://example.com/large-file", (res) => {
res.on("data", () => {});
});
// Remote server closes the connection mid-transferError en la terminal
Error: read ECONNRESET
at TLSSocket.onConnectEnd (_tls_wrap.js:...)
errno: -54,
code: 'ECONNRESET',
syscall: 'read'Cómo solucionarlo
Implementa lógica de reintento con retroceso exponencial para errores ECONNRESET transitorios. Establece configuraciones apropiadas de keep-alive y timeout en tu agente HTTP. Monitorea patrones (todas las solicitudes a un servidor reiniciándose) para distinguir problemas de infraestructura de bugs en el código.
Código corregido
const http = require("http");
const req = http.get("http://example.com/large-file", (res) => {
res.on("data", () => {});
res.on("error", (err) => console.error("Response error:", err));
});
req.on("error", (err) => {
if (err.code === "ECONNRESET") {
console.error("Connection reset by peer, retrying...");
}
});Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis