Lingua-e
JavaScript

¿Qué significa MaxListenersExceededWarning?

← Errores

Node.js emite esta advertencia cuando se agregan más de 10 escuchadores (el máximo predeterminado) a un solo evento en un EventEmitter. Es una advertencia, no un error, diseñada para ayudar a detectar posibles fugas de memoria por la falta de eliminación de escuchadores.

Por qué ocurre

  • Los escuchadores se agregan en un bucle o en cada solicitud sin ser eliminados.
  • Una función que adjunta un escuchador se llama múltiples veces sin limpieza.
  • Librerías de terceros adjuntan escuchadores a emisores compartidos sin eliminarlos.

Ejemplos

JavaScript

Código que causa el error

const EventEmitter = require("events");
const emitter = new EventEmitter();

for (let i = 0; i < 20; i++) {
  emitter.on("data", () => console.log("received"));
}

Error en la terminal

(node:12345) MaxListenersExceededWarning: Possible EventEmitter memory leak detected.
11 data listeners added to [EventEmitter]. Use emitter.setMaxListeners() to increase limit

Cómo solucionarlo

Elimina los escuchadores cuando ya no sean necesarios con .off() o .removeListener(). Usa .once() para escuchadores de un solo uso. Si genuinamente necesitas más de 10 escuchadores, llama a emitter.setMaxListeners(n). Trata la advertencia como una señal para revisar el ciclo de vida de tus escuchadores.

Código corregido

const EventEmitter = require("events");
const emitter = new EventEmitter();

function handleData() {
  console.log("received");
}
emitter.on("data", handleData);

// When done:
emitter.off("data", handleData);

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