Was bedeutet dieser JavaScript Error und wie behebe ich ihn? (Discord JS)?
Der Fehler ist:
(node:13944) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 messageReactionAdd listeners added to [Client]. Use emitter.setMaxListeners() to increase limit
Liebe Grüße
2 Antworten
Ich zitiere direkt aus der Dokumentation:
By default EventEmitters will print a warning if more than 10 listeners are added for a particular event. This is a useful default that helps finding memory leaks. The emitter.setMaxListeners() method allows the limit to be modified for this specific EventEmitter instance. The value can be set to Infinity (or 0) to indicate an unlimited number of listeners.
Der Emitter ist dasselbe Objekt, dem du mit addListener die Listener angehängt hast.
Statt nun aber stumpf die maximale Anzahl zu erhöhen oder die Warnung zu ignorieren (es ist kein Fehler, die elf Listener werden trotzdem abgearbeitet), würde ich dazu raten, das Problem näher zu betrachten. Durchaus kann es sein, dass du in deinem Code irgendwo einen Fehler hast (etwas, was die Event Loop blockiert). Mit einem Node.js Profiling-Tool (nutze Google) zu prüfen, wäre wohl kein schlechter Anfang, um herauszufinden, welche Aktionen zu viel Zeit beanspruchen.
Der Discord.js-Guide führt übrigens ebenfalls Informationen zu dieser Warnung auf, mitsamt Lösungsvorschlägen, wie man dem nachgehen kann.
Kenne den nicht, aber verstehe den wie folgt:
Du hast für einen Event sehr viele Listener angemeldet. Du sagtst JavaScript, dass viele Stellen Code von dir bei einem Ereignis aufgerufen werden sollen.
Die Liste für eine Art von Event war schon zu 100% der voreingestellten Anzahl von Listenern (deine Methoden) belegt.
Frage: registrierst du Listener in einer Schleife?
Ich habe das Problem behoben^^ vielen dank dir trotzdem für deine Antwort auf meine Frage :)