使用 node-rest-client 检测到 EventEmitter 内存泄漏
EventEmitter memory leak detected with node-rest-client
在执行我的 mocha testsuit 期间,Node.js 报告了以下警告:
(node) warning: possible EventEmitter memory leak detected. 11 error listeners a
dded. Use emitter.setMaxListeners() to increase limit.
Trace
at Object.addListener (events.js:179:15)
at new exports.Client (C:\xyz\node_modules\node-rest-client\lib\node-rest-
client.js:320:17)
at Context.<anonymous> (C:\xyz\test\backend\rest\resources.js:40:10)
...
我强烈怀疑这与我使用的 node-rest-client 模块有关。警告中指出的最后一行实际上是:
rest = new Client();
如果我只执行一个引发此警告的测试用例,则不会显示警告。只有当我执行整个测试套件时才会发生这种情况,大约有 15 条新的 Client() 行。
我还没有找到以某种方式关闭其余客户端的方法,所以我现在尝试简单地使用:
delete rest
删除警告没有帮助。
有什么线索吗?
这不一定是问题,更多的是系统的警告,以确保您知道自己在做什么。
由于 node-rest-client
的内部结构,您不能专门针对该模块更改它(另请参阅 this issue),但要在测试期间消除警告,请将其放在某处代码的顶部:
require('events').EventEmitter.defaultMaxListeners = Infinity;
更多信息here。
在执行我的 mocha testsuit 期间,Node.js 报告了以下警告:
(node) warning: possible EventEmitter memory leak detected. 11 error listeners a
dded. Use emitter.setMaxListeners() to increase limit.
Trace
at Object.addListener (events.js:179:15)
at new exports.Client (C:\xyz\node_modules\node-rest-client\lib\node-rest-
client.js:320:17)
at Context.<anonymous> (C:\xyz\test\backend\rest\resources.js:40:10)
...
我强烈怀疑这与我使用的 node-rest-client 模块有关。警告中指出的最后一行实际上是:
rest = new Client();
如果我只执行一个引发此警告的测试用例,则不会显示警告。只有当我执行整个测试套件时才会发生这种情况,大约有 15 条新的 Client() 行。
我还没有找到以某种方式关闭其余客户端的方法,所以我现在尝试简单地使用:
delete rest
删除警告没有帮助。
有什么线索吗?
这不一定是问题,更多的是系统的警告,以确保您知道自己在做什么。
由于 node-rest-client
的内部结构,您不能专门针对该模块更改它(另请参阅 this issue),但要在测试期间消除警告,请将其放在某处代码的顶部:
require('events').EventEmitter.defaultMaxListeners = Infinity;
更多信息here。