Lingua-e
JavaScript

What is a MaxListenersExceededWarning?

← Errors

Node.js emits this warning when more than 10 listeners (the default maximum) are added to a single event on an EventEmitter. It is a warning, not an error, designed to help detect potential memory leaks from forgotten listener removal.

Why it happens

  • Listeners are added in a loop or on every request without being removed.
  • A function that attaches a listener is called multiple times without cleanup.
  • Third-party libraries attach listeners to shared emitters without removing them.

Examples

JavaScript

Code that triggers the error

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

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

Error output

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

How to fix it

Remove listeners when they are no longer needed with .off() or .removeListener(). Use .once() for one-shot listeners. If you genuinely need more than 10 listeners, call emitter.setMaxListeners(n). Treat the warning as a signal to review your listener lifecycle.

Fixed code

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

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

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

Related errors

Ready to practice your English at work?

Lingua-e has interactive exercises built around real developer conversations: standups, code reviews, retrospectives, and more. Practice until it comes naturally.

Try Lingua-e for free