1
 (node) warning: possible EventEmitter memory leak detected. 11 listeners added.
 Use emitter.setMaxListeners() to increase limit.
 Trace:
     at StatWatcher.<anonymous> (events.js:139:15)
     at Object.watchFile (fs.js:762:8)
     at /home/gotimeco/gtnode2.js:79:11
     at Object.oncomplete (path.js:406:19)

node.js v0.10.13 を使用しています。何か案は ?

4

1 に答える 1

3

fs.watchFile が同じファイルに対して複数回呼び出されていないことを確認してください。

説明: fs モジュールには、監視されているファイルを追跡するためのローカル オブジェクト "statWatchers" {} が含まれています。

そのため、fs.watchFile('fileX') が呼び出されると、新しい statWatcher オブジェクトが作成され、ファイル名に対して「statWatchers」オブジェクトに保存されます。このファイルに関連付けられた statWatcher オブジェクトが既に存在する場合は、それが返されます。

statWatcher["fileX"] = 新しい statWatcher();

次に、このファイルに関連付けられた statWatcher オブジェクトで addListener('change', listener) を呼び出します。

fs.watchFile が "fileX" で 11 回呼び出されると、イベント "change" の statWatcher で addListener が 11 回呼び出されることになります。

同じイベントに 11 を超えるリスナーを追加しようとすると、EventEmitter はエラーをスローします。

答えがあなたの問題に対処したことを願っています。

于 2013-07-30T13:49:45.523 に答える