Node.js fs.watchFile错误检测到EventEmitter内存泄漏

时间:2013-07-30 09:57:16

标签: node.js fs

 (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。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

请确保fs.watchFile不会在同一个文件上多次调用。

阐释: fs模块包含一个本地对象“statWatchers”{}来跟踪正在监视的文件。

因此,当调用fs.watchFile('fileX')时,如果没有退出并将其存储在“statWatchers”对象中,则会创建一个新的statWatcher对象。 如果已存在与此文件关联的statWatcher对象,则返回该对象。

statWatcher [“fileX”] =新的statWatcher();

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

在“fileX”上调用fs.watchFile 11次,这将导致在statWatcher上调用addListener,使事件“更改”11次。

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

希望答案能解决你的问题。