没有方法“setMaxListeners”错误

根据这个问题,我需要调用request.setMaxListeners(0)来解决所描述的问题。

当我尝试做:

 var request = require('request'); request.setMaxListeners(0); 

我收到以下错误信息:

 request.setMaxListeners(0); ^ TypeError: Object function request(uri, options, callback) { if (typeof uri === 'undefined') throw new Error('undefined is not a valid uri or options object.') if ((typeof options === 'function') && !callback) callback = options if (options && typeof options === 'object') { options.uri = uri } else if (typeof uri === 'string') { options = {uri:uri} } else { options = uri } options = copy(options) if (callback) options.callback = callback var r = new Request(options) return r } has no method 'setMaxListeners' at Object.<anonymous> (/home/vagrant/twitter/test.js:3:9) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:901:3 

如何在使用请求模块时正确调整setMaxListeners的默认值?

节点–version:0.10.4
请求模块版本:2.16.6

       

网上收集的解决方案 "没有方法“setMaxListeners”错误"

编辑

经过一番讨论,我认为你正在尝试做这样的事情,“setMaxListeners”

 var request = require('request'); // this will fail request.setMaxListeners(0); request('http://www.google.com', function (error, response, body) { // do something ... }) 

一步步

 var request = require('request'); 

请求模块是必需的。 该模块输出function请求 。

这个函数不会从EventEmitterinheritance – 一个内部节点“class” – 所以它没有“setMaxListeners方法” 。

考虑到这一点,下面的行会失败

 request.setMaxListeners(0); 

您需要一个Request对象 ,该对象 从EventEmitterinheritance并具有所需的方法。

要获得一个,只需调用请求函数。 在这个函数返回的值上,你可以调用“setMaxListeners”。

 var request_object = request('http://www.google.com') request_object.setMaxListeners(0) 

如果我们把电话连接起来,那就更好

 request('http://www.google.com').setMaxListeners(0) 

警告

不build议删除最大听众限制。 某种无限循环可能是问题 – 可能是一个监听器绑定在每个“请求”事件上 – 抛出“太多的监听器绑定”错误。 这个错误是检测内存泄漏的有效方法,所以我build议提高一下“maxListeners”的限制,而不是设置为“unlimited”

为此,传递一个int!= 0。注意,默认值是10。

 request( // // request stuff goes here // ).setMaxListeners(20) 

答案

 var request = require('request'); request('http://www.google.com', function (error, response, body) { // // do something ... // }).setMaxListeners(20)