1. ホーム
  2. node.js

[解決済み] node.js - リクエスト - "emitter.setMaxListeners() "はどのように?

2022-02-03 17:54:13

質問

node.jsの「request」モジュールを使って、あるURIをGETしたとき。

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

エラーメッセージは

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

というメッセージがあり、また、次のようなメッセージがあります。

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

どうすれば setMaxListeners ?

解決方法は?

このコードを使用しないことを強くお勧めします。

process.setMaxListeners(0);

警告は理由なく出ているわけではありません。ほとんどの場合、あなたのコードにエラーが隠されているからです。制限を取り除くと、警告はなくなりますが、その原因はなくなり、リソース漏れの原因として警告されるのを防ぐことができます。

正当な理由で制限にかかった場合は、関数に妥当な値を入れてください(デフォルトは10です)。

また、デフォルトを変更するには、EventEmitterのプロトタイプをいじる必要はなく、defaultMaxListeners属性の値をこのように設定すればよい。

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