2011-10-13 58 views
5

我跑在節點v0.5.9如下:fs.watch通過節點0.5.9在Mac OSX

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事件。看看節點代碼並測試它應該是可能的。

那麼,是否有可能讓fs.watch觀看目錄及其所有子目錄?至少可以從文件修改中獲取事件嗎?另外,從我所知道的,fs.watch支持kqueue這是綁在eventid(在OSX中),是否有可能獲得eventid

注意:我特別使用fs.watch而不是fs.watchFile,因爲我需要觀察整個目錄(最好是所有子目錄:)。

感謝您的幫助!

+0

0.5.9不穩定。隨意添加一個更詳細的例子在github中的bug。您可以使用Isaac的「主管」 – malletjo

+0

此問題在https://github.com/joyent/node/issues/1986中報告,並至少部分固定在0.6.0的穩定版本中。 –

+0

感謝鏈接特雷弗!一旦我有機會升級到0.6.0 ... :) –

回答