NodeJS fs.watch в каталоге срабатывает только при изменении редактором, но не оболочкой или модулем fs

Когда запускается приведенный ниже код, часы запускаются только тогда, когда я редактирую и сохраняю tmp.txt вручную, используя либо мой ide, TextEditor.app, либо vim.

Это не с помощью метода потока записи или ручного перенаправления вывода оболочки (введите echo «test»> /path/to/tmp.txt").

Хотя, если я посмотрю сам файл, а не его dirname, тогда он работает.

var fs, Path, file, watchPath, w;

fs = require('fs' );
Path = require('path');
file = __dirname + '/tmp.txt';
watchPath = Path.dirname(file); // changing this to just file makes it trigger

w = fs.watch ( watchPath, function (e,f) {
    console.log("will not get here by itself");
    w.close();
});
fs.writeFileSync(file,"test","utf-8");

fs.createWriteStream(file, {
    flags:'w',
    mode: 0777
} )
.end('the_date="'+new Date+'";' ); // another method fails as well

setTimeout (function () {
    fs.writeFileSync(file,"test","utf-8");
},500); // as does this one
// child_process exec and spawn fail the same way with or without timeout

Итак, вопросы: почему? и как программно вызвать это событие из скрипта узла?

Спасибо!

8
задан Bijou Trouvaille 26 May 2012 в 00:29
поделиться