2011-10-13 19 views
5

biegnę na następujące v0.5.9 Node:fs.watch poprzez węzeł 0.5.9 na Mac OSX

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

I wtedy zrobić:

  • cd /Users/username/testingFsWatcher/
  • >file1 - >{ '0': 'rename', '1': null }
  • mkdir new_folder ->{ '0': 'rename', '1': null }
  • >new_folder/file2 -> no zdarzenie wyzwalane/wyjścia
  • touch file1 -> no zdarzenie wyzwalane/wyjścia
  • rm file1 ->{ '0': 'rename', '1': null }

dwie rzeczy zauważyłem, że wydają się nieprawidłowe: podkatalogów (new_folder) nie są oglądane a aktualizacje/modyfikacje oglądanych plików nie wyzwalają zdarzenia change. Patrząc na kod węzła i testy wydaje się, że powinny być możliwe.

Czy jest zatem możliwe, aby fs.watch obejrzał katalog i wszystkie jego podkatalogi? Czy jest co najmniej możliwe, aby uzyskać zdarzenie z modyfikacji pliku? Ponadto, z tego co wiem, fs.watch jest wspierany przez kqueue, który jest powiązany z eventid (w systemie OSX), czy możliwe jest uzyskanie tego eventid?

Uwaga: Używam konkretnie fs.watch, a nie fs.watchFile, ponieważ muszę obejrzeć cały katalog (najlepiej wszystkie jego podkatalogi :).

Dzięki za pomoc!

+0

0.5.9 nie jest stabilny. Możesz dodać błąd w github z bardziej szczegółowym przykładem. Można użyć "Nadzorcy" przez Isaaca – malletjo

+0

Ten problem jest zgłaszany na stronie https://github.com/joyent/node/issues/1986 i jest przynajmniej częściowo naprawiony w wersji stabilnej 0.6.0. –

+0

Dzięki za link Trevor! Postaram się opublikować moje wyniki w tym wątku, gdy tylko będę miał szansę na uaktualnienie do 0.6.0 ... :) –

Odpowiedz