Lingua-e
← Errores
JavaScript

Qué significa ECONNRESET y cómo solucionarlo

Referencia del error

ECONNRESET

Lenguaje

JavaScript

Severidad

Alta

Cuá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.

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

JavaScript

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-transfer

Error 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