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