fs.watch意外行为

时间:2014-11-29 02:37:45

标签: node.js

如果我将以下程序作为node watcher.js file.txt运行,那么当我触摸file.txt时,它会按预期运行。但是如果我在vim中打开file.txt并保存,那么它就会停止检测将来对文件的修改。这对我来说真的很奇怪,为什么会出现这种情况?

var fs = require('fs');

var args = process.argv;
if (args.length <= 2) {
    console.log('USAGE: ' + args[1] + ' filename');
    process.exit(1);
}

var filename = args[2];

fs.watch(filename, function(event, filename) {
   console.log('file ' + filename + ' changed!');
});

1 个答案:

答案 0 :(得分:1)

检查第一个参数的内容非常重要,而不仅仅是文件名。问题是event可以是'change''rename'

在这种情况下,看起来vim实际上是重命名旧文件并创建一个新文件。