Node.js fs手表在单次更换时触发两次

Node.js fs手表在单次更换时触发两次,node.js,Node.js,我刚刚开始学习NodeJS,这是我编写的第一个示例 const fs = require('fs'); fs.watch('target.txt', () => { console.log('File target.txt just changed..'); }); console.log('Now watching target.txt for changes'); 当我回显'Hello..>>target.txt时,我会看到控制台日志发生两次 为什么会有这种奇怪的行为 根据节

我刚刚开始学习NodeJS,这是我编写的第一个示例

const fs = require('fs');
fs.watch('target.txt', () => {
    console.log('File target.txt just changed..');
});
console.log('Now watching target.txt for changes');
当我回显'Hello..>>target.txt时,我会看到控制台日志发生两次

为什么会有这种奇怪的行为

根据节点的for
fs.watch(文件名[,选项][,侦听器])
,我正在使用节点v8.12.0

已知的注意事项

fs.watch
API在不同平台之间不100%一致,在某些情况下不可用。递归选项仅在
macOS
Windows
上受支持

另外,
Windows
有一个已知的设计,其中两个回调被触发以写入一个文件。这在一篇类似的文章中得到了验证

fs.watch
只是节点上的一个错误api,导致行为不一致


希望这有帮助

我看到
文件target.txt已更改..
两次。它是随机的,有时只是一个日志,有时是两个日志。啊,我明白了,你是在windows还是macintosh上?值得一提的是,我在我的mac上运行了这个,它确实显示了两次。@Phix是的,我在mac上
fs.watch('target.txt',(eventType,filename)=>…
每次调用回调时,这两个值是什么?@PatrickRoberts每次
eventType=change
filename=target.xt