Nodejs MaxListenersExceededWarning

Ste*_*ael 2 node.js express

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

错误信息:

(node:9140) MaxListenersExceededWarning: Possible EventEmitter memory leak detec
ted. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
Run Code Online (Sandbox Code Playgroud)

Jay*_*don 5

当您EventEmitter在代码中直接或间接使用s并且在太短的时间内创建太多代码以致无法解决时,通常会发生此错误-Node将其检测为内存泄漏,并在Max Listener计数达到最大值后抛出错误被超过。

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

如果没有您的特定代码,将很难查明原因,但是我建议您检查您的代码,以了解可能直接使用或包含在其中的模块中使用的所有事件发射器,并查找可能无意中创建的任何实例。其中太多并行(例如,通过Promises或类似的模块async)。关键是要在代码中寻找您可以执行大量并行执行的地方,例如带有Promises的循环。