首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js -请求-如何"emitter.setMaxListeners()"?

node.js -请求-如何"emitter.setMaxListeners()"?
EN

Stack Overflow用户
提问于 2011-11-29 15:47:59
回答 7查看 140.6K关注 0票数 64

当我使用node.js 'request‘模块访问某个URI时;

代码语言:javascript
复制
var options = {uri:"aURI", headers:headerData};
request.get(options, function (error, response, body) {
}

错误消息是:

代码语言:javascript
复制
[Error: Exceeded maxRedirects. Probably stuck in a redirect loop.]

,还有以下消息:

代码语言:javascript
复制
"(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit."

我如何setMaxListeners

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-05-23 19:06:37

我强烈建议不要使用代码:

代码语言:javascript
复制
process.setMaxListeners(0);

警告并非无缘无故地存在。大多数情况下,这是因为代码中隐藏了一个错误。删除该限制将删除警告,但不会消除其原因,并防止您收到资源泄漏源的警告。

如果出于合理的原因而达到限制,则在函数中添加一个合理的值(默认值为10)。

此外,要更改默认设置,不需要处理EventEmitter原型。可以设置defaultMaxListeners属性的值,如下所示:

代码语言:javascript
复制
require('events').EventEmitter.defaultMaxListeners = 15;
票数 107
EN

Stack Overflow用户

发布于 2015-08-17 12:14:22

我使用代码来提高默认的全局限制:require('events').EventEmitter.prototype._maxListeners = 100;

票数 33
EN

Stack Overflow用户

发布于 2011-11-30 14:59:58

我就是这样解决问题的:

在“请求”模块的main.js中,我添加了一行:

代码语言:javascript
复制
Request.prototype.request = function () {
  var self = this
  self.setMaxListeners(0); // Added line

这定义了无限侦听器http://nodejs.org/docs/v0.4.7/api/events.html#emitter.setMaxListeners

在我的代码中,我显式地设置了'maxRedirects‘值:

代码语言:javascript
复制
var options = {uri:headingUri, headers:headerData, maxRedirects:100};
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8313628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档