2011-10-13 13 views
5

sto correndo il seguente sul nodo v0.5.9:fs.watch via Nodo 0.5.9 su Mac OSX

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

Ho poi faccio:

  • cd /Users/username/testingFsWatcher/
  • >file1 - >{ '0': 'rename', '1': null }
  • mkdir new_folder ->{ '0': 'rename', '1': null }
  • >new_folder/file2 -> nessun caso innescato/uscita
  • touch file1 -> nessun caso innescato/uscita
  • rm file1 ->{ '0': 'rename', '1': null }

Due cose che ho notato che sembrano non corretta: sottodirectory (new_folder) non sono guardato e gli aggiornamenti/modifiche ai file guardati non attivano un evento change. Guardando oltre il codice del nodo e test sembra che questi dovrebbero essere possibili.

Quindi, è possibile ottenere fs.watch per guardare una directory e tutte le sue sottodirectory? È almeno possibile ottenere un evento da una modifica del file? Inoltre, da quello che posso dire, lo è supportato da kqueue che è collegato a un eventid (in OSX), è possibile ottenere quello eventid?

Nota: sto specificatamente utilizzando fs.watch e non fs.watchFile perché ho bisogno di guardare un'intera directory (preferibilmente anche tutte le sottodirectory :).

Grazie per l'aiuto!

+0

0.5.9 non è stabile. Sentiti libero di aggiungere un bug in github con un esempio più dettagliato. Potresti usare "Supervisor" di Isaac – malletjo

+0

Questo problema è riportato su https://github.com/joyent/node/issues/1986, ed è almeno parzialmente risolto sotto la stable 0.6.0. –

+0

Grazie per il link Trevor! Proverò a pubblicare i miei risultati su quel thread quando avrò la possibilità di effettuare l'aggiornamento a 0.6.0 ... :) –

risposta

0

Questo problema non viene più visualizzato nell'ultima versione del nodo. Tuttavia, ci sono molti altri bug rimanenti in fs.watch, quindi potresti voler continuare a utilizzarlo fino a quando non vengono indirizzati: https://github.com/joyent/node/issues/search?q=fs.watch