Nodejs Печать данных fs.readfile после того, как chokidar's watcher.on ('change) возвращает пустую строку - PullRequest
0 голосов
/ 07 сентября 2018

Я пытаюсь прочитать файл, когда он меняется. Изменение файла является выводом веб-пакета. Он дает противоречивые результаты, когда возвращает пустую строку, даже если измененный файл не является emtpy. Я приложил скриншот журналов .

var watcher = chokidar.watch(path.resolve(__dirname, '../../dist/main.root.js'), /^\./, {persistent : true, usePolling: true, interval: 1000})

watcher
 .on('add', path => {
    // fileAdded(path)
    console.log(`File ${path} has been added`, Date.now())
  })
  .on('change', path => {
    console.log(`File ${path} has been changed`)
    fileChanged(path)
  })

function fileChanged (path) {
  fs.readFile(path, 'utf8', (err, data) => {
    if (err) {
      console.error(err)
    } else {
      var target = data
      console.log('***target***', typeof target, target)
      console.log('***path***', path)
    }
  })
}

1 Ответ

0 голосов
/ 14 октября 2018

Проблема в том, что chokidar не ожидает завершения записи файла, если это не определено в конфигурации. Проверьте chokidar-get-start и самое главное:

  awaitWriteFinish: {
    stabilityThreshold: 2000,
    pollInterval: 100
  }

Этот параметр должен решить вашу проблему.

...