Qué significa ECONNRESET y cómo solucionarlo
Referencia del error
ECONNRESET
Lenguaje
Severidad
AltaCuándo ocurre
ECONNRESET es un error a nivel TCP que ocurre cuando una conexión es cerrada forzosamente por el otro extremo mientras los datos aún se están transfiriendo.
Posibles soluciones
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.
Errores relacionados
Más detalles
ECONNRESET es un error a nivel TCP que ocurre cuando una conexión es cerrada forzosamente por el otro extremo mientras los datos aún se están transfiriendo. No es exclusivo de Node.js — el mismo errno aparece en instalaciones de npm/herramientas de build (incluyendo Bootstrap), Python, streams de video con OpenCV, sesiones de tmux por SSH y apps móviles, porque viene del stack de red del sistema operativo. 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.
- •Un proxy, VPN o red corporativa inestable interrumpe una descarga larga — común en instalaciones de npm/pip o al transmitir video con una librería como OpenCV.
Posibles soluciones
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.
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ó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...");
}
});Practica en inglés
¿Cómo le explicarías un ECONNRESET a un compañero dev? Elige la frase correcta:
"I hit an error...
¿Programando en inglés?
Para arreglar esto, leíste inglés técnico real. Lingua-e tiene ejercicios gratis hechos igual: dailys, code reviews y situaciones reales de trabajo.
Practicar inglés para developers gratis