以下のコードを実行すると、ide、TextEditor.app、または vim のいずれかを使用して tmp.txt を手動で編集および保存した場合にのみ、監視がトリガーされます。
書き込みストリームまたは手動のシェル出力リダイレクト (echo "test" > /path/to/tmp.txt" と入力) の方法によるものではありません。
ただし、ディレクトリ名ではなくファイル自体を監視すると、機能します。
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
質問は次のとおりです。なぜですか?ノードスクリプトからプログラムでこのイベントをトリガーする方法は?
ありがとう!