У меня проблемы с чтением данных из файла, созданного с помощью fs.createWriteStream.
Похоже, что stream.write исполняется в конце программы после чтения файла, а не когда он вызывается (что объясняет, почему в variable_3 на момент его вывода ничего нет).
Используемая функция следующая (упрощенная):
module.exports = async data1 => {
console.log('start');
try {
const stream = fs.createWriteStream(filename_1, { flags: "a" });
console.log('stream created');
stream.write("some data", (err) => {
if (err) {
console.log(err.message);
} else {
console.log("data written");
}
});
for (const variable_1 of object_1) {
const variable_2 = await function2({
// generates a buffer
});
stream.write(variable_2, (err) => {
if (err) {
console.log(err.message);
} else {
console.log("data written");
}
});
}
stream.end();
console.log('stream ended');
console.log('opening file');
const variable_3 = fs.readFileSync(filename_1);
console.log('file opened and read with data: ' + variable_3);
return;
} catch (error) {
console.log(error);
}
};
Output:
> start
> stream created
> stream ended
> opening file
> file opened and read with data:
> data written
> data written
Однако, после запуска кода, когда я открываю filename_1 (через проводник), все данные присутствуют?!