Nodejs Печать данных fs.readfile после того, как chokidar's watcher.on('change) возвращает пустую строку
Я пытаюсь прочитать файл, когда он меняется. Изменение файла является выходом веб-пакета. Он дает противоречивые результаты, когда возвращает пустую строку, даже если измененный файл не является 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 ответ
Проблема в том, что chokidar не ожидает окончания записи файла, если это не определено в конфигурации. Проверьте chokidar-Get-Start и самое главное:
awaitWriteFinish: {
stabilityThreshold: 2000,
pollInterval: 100
}
Этот параметр должен решить вашу проблему.