节点版本: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的调试器没有错误或异常。
什么原因导致它无法运行?
答案 0 :(得分:1)
如果在写入路径完成之前进程已死,则不会调用您的回调,因为它是异步的。
所以您有3个选择
writeFileSync
(效果不佳,但混乱程度较小)