在Mac OSX上通过节点0.5.9的fs.watch

我在Node v0.5.9上运行以下内容:

var fs = require("fs"); fs.watch("/Users/username/testingFsWatcher/",function(event,file) { console.dir(arguments); }); 

然后我做:

  • cd /Users/username/testingFsWatcher/
  • >file1 – > { '0': 'rename', '1': null }
  • mkdir new_folder – > { '0': 'rename', '1': null }
  • >new_folder/file2 – >没有事件触发/输出
  • touch file1 – >没有事件触发/输出
  • rm file1 – > { '0': 'rename', '1': null }

我注意到两件事情看起来不正确:不监视子目录( new_folder ),更新/修改观看的文件不会触发change事件。 看看节点代码,并testing它应该是可能的。

那么,是否有可能让fs.watch观看一个目录及其所有的子目录? 是否至less有可能从文件修改中获得一个事件? 另外,据我所知, fs.watch是由绑定到eventid (在OSX中)的kqueue支持的,是否有可能获得这个eventid

注意:我特别使用fs.watch而不是fs.watchFile因为我需要观察整个目录(最好是所有的子目录:)。

谢谢您的帮助!

此问题不再出现在最新的Node版本中。 但是,在fs.watch中还有其他一些bug,所以你可能想暂时使用它,直到解决这些bug为止: https : //github.com/joyent/node/issues/search? fs.watch

Interesting Posts