Nodejs MaxListenersExceededWarning

问题描述 投票:1回答:1

我有一个错误,我不知道如何解决它。它只发生了几次。

错误信息:

(node:9140) MaxListenersExceededWarning: Possible EventEmitter memory leak detec
ted. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
node.js express
1个回答
3
投票

当您在代码中直接或间接使用EventEmitters并且在太短的时间内创建太多而无法解析时,通常会发生此错误 - 节点将此检测为内存泄漏,并在Max Listener计数具有错误时抛出错误被超过了。

例如,在单元测试中,在每次测试之前和之后设置和拆除前置条件通常是常见的。像Mocha这样的测试运行器通常会并行运行测试,因此如果您进行了数十次测试,那么如果您的设置步骤执行发出事件的操作(例如,连接到数据库),则可以快速运行事件监听器计数。

如果没有您的特定代码,很难确定原因,但我建议您查看您可能直接使用的任何事件发射器的代码,或者您正在使用的模块中查找代码,并查找可能无意中创建的任何实例太多的并行(例如通过Promises或像async这样的模块)。关键是要在代码中查找具有大量并行执行的位置,例如使用Promises的循环。

© www.soinside.com 2019 - 2024. All rights reserved.