当我使用node.js 'request'模块对某个URI执行GET时;
var options = {uri:"aURI", headers:headerData};
request.get(options, function (error, response, body) {
}
错误信息为:
[Error: Exceeded maxRedirects. Probably stuck in a redirect loop.]
还有如下信息:
"(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit."
我如何setMaxListeners
?
7条答案
按热度按时间pieyvz9o1#
我强烈建议不要使用代码:
警告不是无缘无故的。大多数情况下,这是因为代码中隐藏了错误。删除限制将删除警告,但不会删除其原因,并防止您收到资源泄漏源的警告。
如果您出于合理的原因达到了限制,请在函数中设置一个合理的值(默认值为10)。
此外,要更改默认值,不必修改EventEmitter原型。你可以这样设置defaultMaxListeners属性的值:
r1zhe5dt2#
我使用代码来全局增加默认限制:
require('events').EventEmitter.prototype._maxListeners = 100;
ioekq8ef3#
我是这样解决这个问题的:
在'request'模块的main.js中,我添加了一行:
这定义了无限的监听器http://nodejs.org/docs/v0.4.7/api/events.html#emitter.setMaxListeners
在我的代码中,我显式地设置了'maxRedirects'值:
mlmc2os54#
虽然可以在nodejs模块中添加一些东西,但这似乎不是最好的方法(如果你试图在其他计算机上运行你的代码,程序显然会崩溃并出现相同的错误)。
我宁愿在你自己的代码中设置max listeners number:
ryhaxcpt5#
尝试用途:
9rnv2umw6#
这是@Félix Brunet answer的扩展
原因-您的应用中有代码隐藏
如何找到-
例如-在我的例子中,我创建了30个winston log示例不知不觉,它开始给出错误
**注意:**如果您取消此错误,它将在3..4天后再次出现
uujelgoq7#
这也发生在我身上
我使用这个代码,它的工作
试试看,可能会有帮助
谢谢