54 votes

node.js - demande - Comment "émetteur.setMaxListeners()" ?

Lorsque je fais un GET sur un certain URI en utilisant le module 'request' node.js;

 var options = {uri:"aURI", headers:headerData};
request.get(options, function (error, response, body) {
}

Le message d'erreur est :

 [Error: Exceeded maxRedirects. Probably stuck in a redirect loop.]

et il y a aussi le message suivant :

 "(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit."

Comment puis-je setMaxListeners ?

33voto

zag2art Points 147

J'utilise le code pour augmenter globalement la limite par défaut : require('events').EventEmitter.prototype._maxListeners = 100;

7voto

camden_kid Points 8100

Voilà comment j'ai résolu le problème :

Dans main.js du module 'request' j'ai ajouté une ligne :

 Request.prototype.request = function () {
  var self = this
  self.setMaxListeners(0); // Added line

Cela définit des auditeurs illimités http://nodejs.org/docs/v0.4.7/api/events.html#emitter.setMaxListeners

Dans mon code, j'ai défini explicitement la valeur 'maxRedirects' :

 var options = {uri:headingUri, headers:headerData, maxRedirects:100};

7voto

Mariya Davydova Points 1088

Bien qu'il soit possible d'ajouter quelque chose au module nodejs, cela ne semble pas être le meilleur moyen (si vous essayez d'exécuter votre code sur un autre ordinateur, le programme plantera avec la même erreur, évidemment).

Je préférerais définir le nombre maximal d'auditeurs dans votre propre code :

 var options = {uri:headingUri, headers:headerData, maxRedirects:100};
request.setMaxListeners(0);
request.get(options, function (error, response, body) {
}

-1voto

Essayez d'utiliser:

 require('events').EventEmitter.defaultMaxListeners = Infinity; 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X