我刚刚开始使用NodeJS,这是我编写的第一个示例。
const fs = require('fs');
fs.watch('target.txt', () => {
console.log('File target.txt just changed..');
});
console.log('Now watching target.txt for changes');
当我执行echo 'Hello..' >> target.txt
时,我看到我的控制台日志发生了两次。
为什么会有这种奇怪的行为。
我正在使用节点v8.12.0
2条答案
按热度按时间juzqafwq1#
根据
fs.watch(filename[, options][, listener])
的节点文档:fs.watch
API在不同平台之间并非100%一致,在某些情况下不可用。递归选项仅在macOS
和Windows
上受支持。此外,
Windows
具有已知设计issue,其中 * 两个回调被触发以写入文件 *。这在类似的post here.中得到验证fs.watch
* 只是节点部分上的一个错误API,导致不一致的行为 *。希望能有所帮助!
d7v8vwbk2#
添加一个小的时间限制将使
fs.watch()
不会被处理两次,它仍然会被触发两次,但处理只在指定的时间间隔内运行一次。