Обратный вызов Fs.writeFile не вызывается - PullRequest
0 голосов
/ 07 сентября 2018

Версия узла: 8.11.2

У меня есть простая функция экспорта в CSV, которая принимает массив объектов и генерирует заголовки файла на основе свойств объектов этих объектов.

const exportCsv = (list, fileName) => {
  if (list.length > 0) {
    let headers = Object.keys(list[0]);
    let opts = { headers };
    let parser = new Parser(opts);
    let csv = parser.parse(list);
    fs.writeFile(`./output/${fileName}.csv`, csv, err => {
      if (err) {
        console.error(err);
      }
      console.log(`Wrote ${fileName} to disk.`);
    });
  } else {
    console.log('List is Empty. Nothing to export.');
  }
};

Это прекрасно работало, но теперь обратный вызов в вызове fs.writeFile не срабатывает, и нет никаких ошибок или исключений из отладчика VS Code.

Что могло бы привести его в действие?

1 Ответ

0 голосов
/ 07 сентября 2018

Если процесс не работает до завершения пути записи, ваш обратный вызов не будет вызван, поскольку он асинхронный.

Итак, у вас есть 3 варианта

  1. убедитесь, что ваш процесс не мертв, прежде чем запись пути завершена (вы можете использовать async / await или обещание)
  2. используйте writeFileSync вместо этого (менее эффективно, но менее запутанно)
...