node.js fs.watch не запускается при последующих удалениях - PullRequest
0 голосов
/ 19 декабря 2018

Я хочу настроить простые часы на __dirname в одном из моих модулей:

fs.watch(__dirname, {recursive:true}, () => {console.log('Something changed!')})

В конечном итоге я хочу создать тарбол из __dirname и всякий раз, когда что-то меняется в этом каталоге, или сам каталог удаляется, я хочу распаковать этот tarball обратно в это место, чтобы восстановить все файлы.
Все работает как положено (создание tarball и распаковка его на место при изменении файла или удалении __dirname)
Одна странная вещь: если я удаляю все __dirname, часы запускают обратный вызов, обратный вызов восстанавливает его в исходное состояние.Но когда я снова его удаляю, часы больше не срабатывают.Нет ошибок, просто не обнаруживает удаление!

Альтернативный способ проверки:
1. Открыть терминал A
2. mkdir foo && cd foo
3. git init
4. mkdir bar && cd bar
5. npm init -y
6. Создайте index.js со следующим содержимым:

const fs = require('fs')
fs.watch(__dirname, { recursive: true }, () => {
  console.log('something changed!')
})

7.Зафиксируйте все
8. Откройте другой терминал ( B ) и перейдите в каталог foo, созданный в 1.
9. В A запустите: node index.js
10. В B запустите rm -rf barA вы увидите журналы обратного вызова)
11. В B запустите git reset --hard HEADA вы увидите больше журналов от обратного вызова)
12. Снова в B run rm -rf bar.На этот раз больше нет входа в систему A , обратный вызов часов не сработал!

Это ожидаемое поведение?Я использую узел v10.12.0 и macOS 10.13.6 (High Sierra).
Любая помощь приветствуется:)

...