Node.js 在NodeJs中的fs转储等价物? 客观的

Node.js 在NodeJs中的fs转储等价物? 客观的,node.js,csv,dump,fs,csv-write-stream,Node.js,Csv,Dump,Fs,Csv Write Stream,在终止应用程序之前,强制fs(以及使用它的库)将所有内容写入文件 背景 我正在使用npm包将对象写入CSV文件 一旦库写入CSV文件,我想使用process.exit()终止我的应用程序 代码 为了实现上述目标,我写了以下内容: let writer = csvWriter({ headers: ['country', 'postalCode'] }); writer.pipe(fs.createWriteStream('myOutputFile.csv')); //Very big a

在终止应用程序之前,强制fs(以及使用它的库)将所有内容写入文件

背景 我正在使用npm包将对象写入CSV文件

一旦库写入CSV文件,我想使用
process.exit()
终止我的应用程序

代码 为了实现上述目标,我写了以下内容:

let writer = csvWriter({
  headers: ['country', 'postalCode']
});

writer.pipe(fs.createWriteStream('myOutputFile.csv'));

//Very big array with a lot of postal code info
let currCountryCodes = [{country: Portugal, postalCode: '2950-286'}, {country: Barcelona, postalCode: '08013'}];

for (let j = 0; j < currCountryCodes.length; j++) {
  writer.write(currCountryCodes[j]);
}

writer.end(function() {
  console.log('=== CSV written successfully, stopping application ===');
  process.exit();
});
let writer=csvWriter({
标题:['country','postalCode']
});
writer.pipe(fs.createWriteStream('myOutputFile.csv');
//非常大的数组,包含大量的邮政编码信息
让currCountryCodes=[{国家:葡萄牙,邮政编码:'2950-286'},{国家:巴塞罗那,邮政编码:'08013'}];
for(设j=0;j
问题 这里的问题是,如果执行
process.exit()
,库将没有时间写入文件,文件将为空

由于库使用了
fs
,所以我解决这个问题的方法是在NodeJs中强制使用
fs.dump()
或类似的东西,但是在搜索之后,我没有发现类似的东西

问题
  • 如何在退出应用程序之前强制fs将所有内容转储(推送)到文件中
  • 如果第一个选项不可行,是否有方法等待应用程序写入,然后关闭它

  • 我想你的猜测是对的。 调用
    process.exit()
    时,管道写入流尚未完成写入

    如果您真的想显式终止服务器,这就可以了

    let r = fs.createWriteStream('myOutputFile.csv');
    writer.pipe(r);
    
    ...
    
    writer.end(function() {
      r.end(function() {
        console.log('=== CSV written successfully, stopping application ===');
        process.exit();
      });
    });
    

    只是好奇。您需要调用
    process.exit()
    的具体原因是什么?我猜即使你没有显式调用exit,进程也会终止。因为我正在运行一个nodeJS应用程序,一旦启动,服务器将永远运行,我需要终止它。这正是解决我问题的方法!