【问题标题】:Fs.writeFile callback not called未调用 Fs.writeFile 回调
【发布时间】:2019-02-12 23:32:15
【问题描述】:

节点版本: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 的调试器没有错误或异常。

什么会导致它发疯?

【问题讨论】:

  • 我已经通过使用fs.writeFileSync编写同步版本暂时解决了这个问题

标签: node.js callback fs


【解决方案1】:

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

所以你有 3 个选项

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

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 1970-01-01
    • 2016-08-23
    • 2021-01-22
    • 2020-02-26
    • 1970-01-01
    • 2015-07-30
    • 2018-05-01
    相关资源
    最近更新 更多