gpt4 book ai didi

javascript - 没有方法 'setMaxListeners' 错误

转载 作者:数据小太阳 更新时间:2023-10-29 06:02:34 27 4
gpt4 key购买 nike

根据 this question here 我需要调用 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 的默认值?

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 ...
})

循序渐进

var request = require('request');

请求模块是必需的。该模块导出 the function request .

此函数继承自 EventEmitter - 一个内部 Node “类” - 所以它没有 "setMaxListeners method" .

考虑到这一点,以下行将失败

request.setMaxListeners(0);

你需要一个 Request object , 那inherits from the EventEmitter并具有所需的方法。

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

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

如果我们链式调用会更好

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

警告

根本不推荐删除最大听众数限制。某种无限循环可能是问题所在——可能是每个“请求”事件都绑定(bind)了一个监听器——抛出“太多的监听器绑定(bind)”错误。 此错误是检测内存泄漏的有效方法,因此我建议将“maxListeners”限制提高一点而不是将其设置为“无限制”

为此,传递一个 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)

关于javascript - 没有方法 'setMaxListeners' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093457/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com