yas*_*891 5 javascript request node.js
根据这个问题,我需要打电话request.setMaxListeners(0)来解决所描述的问题.
当我尝试做的时候:
var request = require('request');
request.setMaxListeners(0);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
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
Run Code Online (Sandbox Code Playgroud)
如何正确调整setMaxListeners使用请求模块时的默认值?
node --version:0.10.4
请求模块版本:2.16.6
经过一番讨论之后,我认为你在"setMaxListeners"之后尝试做这样的事情.
var request = require('request');
// this will fail
request.setMaxListeners(0);
request('http://www.google.com', function (error, response, body) {
// do something ...
})
Run Code Online (Sandbox Code Playgroud)
var request = require('request');
Run Code Online (Sandbox Code Playgroud)
请求模块是必需的.该模块导出功能请求.
此函数不从EventEmitter继承 - 一个内部节点"class" - 因此它没有"setMaxListeners方法".
考虑到这一点,以下行将失败
request.setMaxListeners(0);
Run Code Online (Sandbox Code Playgroud)
您需要一个Request对象,它继承自EventEmitter并具有所需的方法.
要获得一个,只需调用请求函数.在此函数返回的值上,您可以调用"setMaxListeners".
var request_object = request('http://www.google.com')
request_object.setMaxListeners(0)
Run Code Online (Sandbox Code Playgroud)
如果我们链接电话会更好
request('http://www.google.com').setMaxListeners(0)
Run Code Online (Sandbox Code Playgroud)
我不建议删除最大侦听器限制.某种无限循环可能是问题 - 可能是每个"请求"事件都绑定一个侦听器 - 抛出"太多侦听器绑定"错误.此错误是检测内存泄漏的有效方法,因此我建议提高一点"maxListeners"限制,而不是将其设置为"无限制".
为此,传递一个int!= 0.注意,默认值为10.
request(
//
// request stuff goes here
//
).setMaxListeners(20)
Run Code Online (Sandbox Code Playgroud)
var request = require('request');
request('http://www.google.com', function (error, response, body) {
//
// do something ...
//
}).setMaxListeners(20)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2906 次 |
| 最近记录: |