MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。 [客户端] 添加了 11 个 voiceStateUpdate 侦听器
MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 voiceStateUpdate listeners added to [Client]
我这里有这段代码可以检测机器人是否被踢出语音聊天。
const serverQueue = message.client.queue.get(message.guild.id);
const botvc = message.guild.me.voice.channel;
if (botvc === null) {
if (serverQueue === undefined) {
const queueConstruct = {
connection: null,
songs: [],
volume: 2,
playing: true,
};
message.client.queue.set(message.guild.id, queueConstruct);
const newqueue = message.client.queue.get(message.guild.id);
if (newqueue.songs[0] !== undefined) {
newqueue.songs[0].looped = 0;
message.client.queue.delete(message.guild.id);
} else {
message.client.queue.delete(message.guild.id);
}
} else {
serverQueue.songs[0].looped = 0;
serverQueue.songs = [];
message.client.queue.delete(message.guild.id);
}
}
这是 discord.js 中的一个 voicestateupdate
事件,在事件处理程序中。
代码有什么问题或者有什么可以修复内存泄漏的吗?
您的代码中可能有其他 voiceStateUpdate
个侦听器,或者您的代码不止一次添加侦听器(调用 client.on('voiceStateUpdate', listener)
)。警告(发生在所有 EventEmitter
上,而不仅仅是 Discord.js' Client
)告诉您为一个事件添加过多的侦听器(默认值为 10)可能是一个错误。
调试时尝试在 client.on('voiceStateUpdate', ...
) 上添加断点,以了解何时添加了侦听器。或者,尝试使用 --trace-warnings
标志查看内存泄漏警告的堆栈跟踪。
如果您确实需要 10 个以上的 voiceStateUpdate
听众(这不太可能),请使用 setMaxListeners
更改事件的最大听众数:
// Changes the maximum number of listeners for an event to 11
client.setMaxListeners(11)
我这里有这段代码可以检测机器人是否被踢出语音聊天。
const serverQueue = message.client.queue.get(message.guild.id);
const botvc = message.guild.me.voice.channel;
if (botvc === null) {
if (serverQueue === undefined) {
const queueConstruct = {
connection: null,
songs: [],
volume: 2,
playing: true,
};
message.client.queue.set(message.guild.id, queueConstruct);
const newqueue = message.client.queue.get(message.guild.id);
if (newqueue.songs[0] !== undefined) {
newqueue.songs[0].looped = 0;
message.client.queue.delete(message.guild.id);
} else {
message.client.queue.delete(message.guild.id);
}
} else {
serverQueue.songs[0].looped = 0;
serverQueue.songs = [];
message.client.queue.delete(message.guild.id);
}
}
这是 discord.js 中的一个 voicestateupdate
事件,在事件处理程序中。
代码有什么问题或者有什么可以修复内存泄漏的吗?
您的代码中可能有其他 voiceStateUpdate
个侦听器,或者您的代码不止一次添加侦听器(调用 client.on('voiceStateUpdate', listener)
)。警告(发生在所有 EventEmitter
上,而不仅仅是 Discord.js' Client
)告诉您为一个事件添加过多的侦听器(默认值为 10)可能是一个错误。
调试时尝试在 client.on('voiceStateUpdate', ...
) 上添加断点,以了解何时添加了侦听器。或者,尝试使用 --trace-warnings
标志查看内存泄漏警告的堆栈跟踪。
如果您确实需要 10 个以上的 voiceStateUpdate
听众(这不太可能),请使用 setMaxListeners
更改事件的最大听众数:
// Changes the maximum number of listeners for an event to 11
client.setMaxListeners(11)