强制fs(以及使用它的库)在终止应用程序之前将所有内容写入文件。
我正在使用npm包csv-write-stream将对象写入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();
});
这里的问题是,如果我执行process.exit()
,则库没有时间写入文件,文件将为空。
由于库使用fs
,我对此问题的解决方法是在NodeJ中强制fs.dump()
或类似的东西,但在搜索之后,我发现没有类似的东西。
答案 0 :(得分:1)
我认为你的猜测是正确的。
当您拨打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();
});
});