当我更改test.js时,console.log("Source code change, start to restart worker one by one")
运行3次?我有一个主进程,所以应该是一次
var cluster = require('cluster');
var fs = require('fs');
if (cluster.isMaster) {
for (var i = 0; i < 2; i++) {
cluster.fork();
}
fs.watch('./config/test.js', function(curr, prev) {
console.log("Source code change, start to restart worker one by one");
delete require.cache[require.resolve('./config/config.js')];
})
}else{
var config = require('./config/test.js')
}
您的看门狗(fs.watch
)被触发了三次,可能是因为您写了三个数据块?也许当文件变大时,它会更频繁地触发?(也许WinSCP会在写入前截断文件?)
我假设您希望仅在文件完全上传时触发?
不幸的是,您无法从inotify(..)
捕获IN_CLOSE_WRITE
消息。
所以在你的fs.watch
里面做一些类似var old = to; to = setTimeout(function() { clearTimeout(old); /* insert real stuff here */ }, 1000)
的事情。如果文件在1000毫秒内不断更改,则该函数只会触发一次…