Fs.writeFile回调未调用

时间:2018-09-07 15:18:33

标签: node.js callback fs

节点版本: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 :(得分:1)

如果在写入路径完成之前进程已死,则不会调用您的回调,因为它是异步的。

所以您有3个选择

  1. 在完成写入路径之前,请确保您的进程没有死(可以使用async / await或promise)
  2. 改为使用writeFileSync(效果不佳,但混乱程度较小)