#node.js #kqueue
#node.js #kqueue
Вопрос:
Я запускаю следующее на узле 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 }
Я заметил две вещи, которые кажутся неправильными: subdirectories ( new_folder
) не просматриваются, а обновления / модификации просматриваемых файлов не вызывают change
событие. Просматривая код узла и тесты, кажется, что это должно быть возможно.
Итак, возможно fs.watch
ли просмотреть каталог и все его подкаталоги? Возможно ли, по крайней мере, получить событие от модификации файла? Кроме того, из того, что я могу сказать, fs.watch
поддерживается kqueue
, который привязан к eventid
(в OSX), возможно ли это получить eventid
?
Примечание: я специально использую fs.watch
, а не fs.watchFile
потому, что мне нужно просматривать весь каталог (желательно, все его подкаталоги тоже :).
Спасибо за помощь!
Комментарии:
1. 0.5.9 не является стабильным. Не стесняйтесь добавлять ошибку в github с более подробным примером. Вы могли бы использовать «Супервизор» от Isaac
2. Об этой проблеме сообщается на github.com/joyent/node/issues/1986 , и, по крайней мере, частично исправлен в стабильной версии 0.6.0.
3. Спасибо за ссылку, Тревор! Я постараюсь опубликовать свои результаты в этой теме, как только у меня появится возможность обновиться до 0.6.0 … 🙂
4. Вместо этого используйте это: npmjs.org/package/node-watch
Ответ №1:
Эта проблема больше не появляется в последней версии Node. Тем не менее, есть несколько других оставшихся ошибок fs.watch
, поэтому вы можете отложить их использование до тех пор, пока они не будут устранены: https://github.com/joyent/node/issues/search?q=fs.watch