检测到可能的 EventEmitter 内存泄漏。不和谐.js
Posted
技术标签:
【中文标题】检测到可能的 EventEmitter 内存泄漏。不和谐.js【英文标题】:Possible EventEmitter memory leak detected. Discord.js 【发布时间】:2021-01-27 09:30:55 【问题描述】:当我睡着时我的机器人正在运行时,这个警告出现了:
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 guildMembersChunk listeners added to [Client]. Use emitter.setMaxListeners() to increase limit
现在我的机器人在相当数量的服务器中,我该如何解决这个问题?
我环顾四周,看到了这个:
require('events').EventEmitter.defaultMaxListeners = 15;
这会是解决方案吗?
【问题讨论】:
您需要显示代码 - 您是在为 guildMembersChunk 创建侦听器,还是在某个时候由库创建?你有关于错误发生之前发生了什么的日志吗? 【参考方案1】:对于任何事件by default
,最多可以注册10
侦听器。可以使用setMaxListener()
方法为单个发射器实例更改此限制,也可以通过将maxListeners count 设置为0
将值设置为Infinity
。
由于您已将限制设置为15
,并且只要侦听器的计数超过此限制,您就会看到EventEmitter memory leak detected
错误。而不是将其设置为 15
侦听器将其设置为 Infinity
并查看行为。
例如:
const EventEmitter = require('events');
const emitter = new EventEmitter();
//Setting the listeners to Infinity
emitter.setMaxListeners(0);
//To validate the number of listeners listening to event you may log the below line
emitter.listenerCount('eventName');
【讨论】:
以上是关于检测到可能的 EventEmitter 内存泄漏。不和谐.js的主要内容,如果未能解决你的问题,请参考以下文章
检测到可能的 EventEmitter 内存泄漏。不和谐.js
Winston - MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏
nodejs Websocket服务器 - 检测到可能的EventEmitter内存泄漏
MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 个消息列表。使用emitter.setMaxListeners() 增加限制
NodeJS:如何调试“检测到 EventEmitter 内存泄漏。添加了 11 个侦听器”
Socket.io 聊天应用程序显示检测到 EventEmitter 内存泄漏。增加了 11 位听众。使用发射器.setMaxListeners()