diff --git a/packages/lib/services/ExternalEditWatcher.ts b/packages/lib/services/ExternalEditWatcher.ts index 21e0285ae..6a20a49d1 100644 --- a/packages/lib/services/ExternalEditWatcher.ts +++ b/packages/lib/services/ExternalEditWatcher.ts @@ -81,7 +81,10 @@ export default class ExternalEditWatcher { if (!this.chokidar_) return; if (!this.watcher_) { - this.watcher_ = this.chokidar_.watch(fileToWatch); + this.watcher_ = this.chokidar_.watch(fileToWatch, { + useFsEvents: false, + }); + this.watcher_.on('all', async (event: string, path: string) => { this.logger().debug(`ExternalEditWatcher: Event: ${event}: ${path}`); diff --git a/packages/lib/services/ResourceEditWatcher/index.ts b/packages/lib/services/ResourceEditWatcher/index.ts index a97fda2fd..93e942682 100644 --- a/packages/lib/services/ResourceEditWatcher/index.ts +++ b/packages/lib/services/ResourceEditWatcher/index.ts @@ -156,9 +156,14 @@ export default class ResourceEditWatcher { }; if (!this.watcher_) { - this.watcher_ = this.chokidar_.watch(fileToWatch); + this.watcher_ = this.chokidar_.watch(fileToWatch, { + // Need to turn off fs-events because when it's on Chokidar + // keeps emitting "modified" events (on "raw" handler), several + // times per seconds, even when nothing is changed. + useFsEvents: false, + }); this.watcher_.on('all', async (event: any, path: string) => { - path = toSystemSlashes(path, 'linux'); + path = path ? toSystemSlashes(path, 'linux') : ''; this.logger().info(`ResourceEditWatcher: Event: ${event}: ${path}`); @@ -186,7 +191,7 @@ export default class ResourceEditWatcher { // // @ts-ignore Leave unused path variable this.watcher_.on('raw', async (event: string, path: string, options: any) => { - const watchedPath = toSystemSlashes(options.watchedPath, 'linux'); + const watchedPath = options.watchedPath ? toSystemSlashes(options.watchedPath, 'linux') : ''; this.logger().debug(`ResourceEditWatcher: Raw event: ${event}: ${watchedPath}`); if (event === 'rename') {