Я хочу настроить простые часы на __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 bar
(в A вы увидите журналы обратного вызова)
11. В B запустите git reset --hard HEAD
(в A вы увидите больше журналов от обратного вызова)
12. Снова в B run rm -rf bar
.На этот раз больше нет входа в систему A , обратный вызов часов не сработал!
Это ожидаемое поведение?Я использую узел v10.12.0
и macOS 10.13.6
(High Sierra).
Любая помощь приветствуется:)