我有一个错误,我不知道如何解决它。它只发生了几次。
错误讯息:
(node:9140) MaxListenersExceededWarning: Possible EventEmitter memory leak detec
ted. 11 error listeners added. Use emitter.setMaxListeners() to increase limit
答案 0 :(得分:3)
当您在代码中直接或间接使用EventEmitter
并且在太短的时间内创建太多而无法解析时,通常会发生此错误 - Node将此检测为内存泄漏并抛出超过最大侦听器计数后出错。
例如,在单元测试中,在每次测试之前和之后设置和拆除前置条件通常很常见。像Mocha这样的测试运行器通常会并行运行测试,因此如果您进行了数十次测试,那么如果您的设置步骤执行发出事件的操作(例如,连接到数据库),则可以快速运行事件监听器计数。
如果没有您的特定代码,很难确定原因,但我建议您查看您可能直接使用的任何事件发射器的代码或您所使用的模块中的代码,并查找您可能使用的任何实例无意中并行创建了太多(例如通过Promises或像async
这样的模块)。关键是要在代码中查找有很多并行执行的地方,例如带Promise的循环。