0
0
NodejsDebug / FixBeginner · 4 min read

How to Fix Max Listeners Exceeded Warning in Node.js

The max listeners exceeded warning in Node.js happens when you add more than 10 listeners to an event emitter by default. To fix it, either remove unused listeners or increase the limit with emitter.setMaxListeners() to avoid memory leak warnings.
🔍

Why This Happens

Node.js limits the number of listeners on an event emitter to 10 by default to help catch potential memory leaks. If your code adds more than 10 listeners to the same event without removing them, Node.js shows a warning.

javascript
const EventEmitter = require('events');
const emitter = new EventEmitter();

for (let i = 0; i < 11; i++) {
  emitter.on('data', () => {
    console.log(`Listener ${i}`);
  });
}

emitter.emit('data');
Output
(node:12345) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 data listeners added. Use emitter.setMaxListeners() to increase limit
🔧

The Fix

You can fix this warning by increasing the max listeners limit if you expect many listeners, or by removing listeners when they are no longer needed. Increasing the limit is done with setMaxListeners().

javascript
const EventEmitter = require('events');
const emitter = new EventEmitter();

// Increase max listeners to 20
emitter.setMaxListeners(20);

for (let i = 0; i < 11; i++) {
  emitter.on('data', () => {
    console.log(`Listener ${i}`);
  });
}

emitter.emit('data');
Output
Listener 0 Listener 1 Listener 2 Listener 3 Listener 4 Listener 5 Listener 6 Listener 7 Listener 8 Listener 9 Listener 10
🛡️

Prevention

To avoid this warning in the future, always remove event listeners when they are no longer needed using emitter.removeListener() or emitter.off(). Also, monitor your code for unintended listener accumulation and use setMaxListeners() wisely.

Using tools like linters or code reviews can help catch patterns that add listeners repeatedly without cleanup.

⚠️

Related Errors

Similar errors include:

  • Memory leaks caused by listeners never removed.
  • EventEmitter warnings when listeners are added in loops unintentionally.
  • Unhandled event errors when no listeners are attached.

Quick fixes involve cleaning up listeners and managing event subscriptions carefully.

Key Takeaways

Node.js warns when more than 10 listeners are added to the same event by default.
Use emitter.setMaxListeners() to increase the listener limit if needed.
Always remove listeners when they are no longer needed to prevent memory leaks.
Check your code for repeated listener additions, especially inside loops.
Use linters and code reviews to catch listener management issues early.