When I do a GET on a certain URI using the node.js 'request' module;
var options = {uri:"aURI", headers:headerData};
request.get(options, function (error, response, body) {
}
The error message is:
[Error: Exceeded maxRedirects. Probably stuck in a redirect loop.]
and there is also the following message:
"(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit."
How do I setMaxListeners
?
This question is related to
node.js
httprequest
Although adding something to nodejs module is possible, it seems to be not the best way (if you try to run your code on other computer, the program will crash with the same error, obviously).
I would rather set max listeners number in your own code:
var options = {uri:headingUri, headers:headerData, maxRedirects:100};
request.setMaxListeners(0);
request.get(options, function (error, response, body) {
}
this is Extension to @FĂ©lix Brunet answer
Reason - there is code hidden in your app
How to find -
Eg - In my case i created 30 instances of winston log Unknowingly and it started giving error
Note : if u supress this error , it will come again afetr 3..4 days
I use the code to increase the default limit globally:
require('events').EventEmitter.prototype._maxListeners = 100;
Try to use:
require('events').EventEmitter.defaultMaxListeners = Infinity;
This is how I solved the problem:
In main.js of the 'request' module I added one line:
Request.prototype.request = function () {
var self = this
self.setMaxListeners(0); // Added line
This defines unlimited listeners http://nodejs.org/docs/v0.4.7/api/events.html#emitter.setMaxListeners
In my code I set the 'maxRedirects' value explicitly:
var options = {uri:headingUri, headers:headerData, maxRedirects:100};
It also happened to me
I use this code and it worked
require('events').EventEmitter.defaultMaxListeners = infinity;
Try it out. It may help
Thanks
Source: Stackoverflow.com