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"] = new statWatcher();

然后在与此文件关联的 statWatcher 对象上调用 addListener('change', listener)。

如果在“fileX”上调用 fs.watchFile 11 次,则会导致在 statWatcher 上为事件“change”调用 addListener 11 次。

如果尝试为同一事件添加超过 11 个侦听器,则 EventEmitter 会引发错误。

希望答案解决了您的问题。

于 2013-07-30T13:49:45.523 回答