N’a pas d’erreur de méthode ‘setMaxListeners’

Selon cette question, je dois appeler request.setMaxListeners(0) pour résoudre le problème décrit.

Quand j’essaie de faire:

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

Je reçois le message d’erreur suivant:

 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 === 'ssortingng') { 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. (/home/vagrant/twitter/test.js:3:9) at Module._comstack (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 

Comment ajuster correctement la valeur par défaut pour setMaxListeners lors de l’utilisation de request-module?

noeud –version: 0.10.4
version du module de demande: 2.16.6

MODIFIER

Après un peu de discussion, je pense que vous essayez de faire quelque chose comme ça, après “setMaxListeners”

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

Pas à pas

 var request = require('request'); 

Le module de demande est requirejs. Ce module exporte la demande de fonction .

Cette fonction n’hérite pas de EventEmitter – un nœud interne “classe” – et n’a donc pas la “méthode setMaxListeners” .

Dans cet esprit, la ligne suivante échouera

 request.setMaxListeners(0); 

Vous avez besoin d’un object Request , héritant de EventEmitter et disposant de la méthode souhaitée.

Pour en obtenir un, appelez simplement la fonction de requête. Sur la valeur renvoyée par cette fonction, vous pouvez appeler “setMaxListeners”.

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

Mieux vaut enchaîner les appels

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

Attention

Je ne recommande pas du tout la suppression de la limite d’écoute maximale. Une sorte de boucle infinie peut être le problème – un auditeur étant lié à chaque événement “request” – pour générer une erreur “trop ​​d’écouteurs liés”. Cette erreur est une méthode efficace pour détecter les memory leaks. Je vous recommande donc de relever un peu la limite “maxListeners” plutôt que de la définir sur “illimité” .

Pour ce faire, transmettez un int! = 0. La valeur par défaut est 10.

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

La réponse

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