【问题标题】:fs watch triggering two times on a singe changefs watch 在一次更改上触发两次
【发布时间】:2019-04-03 18:47:16
【问题描述】:

我刚开始接触 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

【问题讨论】:

  • fs.watch('target.txt', (eventType, filename) => ...每次调用回调时这两个值是多少?
  • @PatrickRoberts 每次eventType = changefilename = target.xt

标签: node.js


【解决方案1】:

根据节点的documentationfs.watch(filename[, options][, listener])

已知警告

fs.watch API 并非跨平台 100% 一致,并且在某些情况下不可用。递归选项仅在 macOSWindows 上受支持。

此外,Windows 有一个已知的设计issue,其中会触发两个回调以写入文件。这在类似的帖子here.

中得到验证

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

希望对您有所帮助!

【讨论】:

  • 我看到File target.txt changed.. 两次。它是随机的,有时它只是一个日志,有时它会记录两次。
  • 啊,我明白了,你是在 windows 还是 macintosh?
  • 为了它的价值,我在我的 Mac 上运行了它,它确实显示了两次。
  • @Phix 是的,我在 Mac 上
猜你喜欢
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 2015-09-03
  • 2016-06-19
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多