Работа на узле с архиватором библиотеки. Я хочу добавить буферы и создать заархивированный поток. Похоже, что приложение не работает, а архив не добавлен.
Это функция
async function archiveFiles(files: Buffer[]): Promise<Buffer> {
const archive = archiver("zip", {
zlib: {level: 9} // Sets the compression level.
});
archive.on("warning", wrn => logger.warn(wrn));
archive.on("error", err => {
logger.warn(err);
throw err;
});
const outputStreamBuffer = new streamBuffers.WritableStreamBuffer({
initialSize: (1000 * 1024), // start at 1 Gig
incrementAmount: (100 * 1024) // grow by 100 kilobytes each time buffer overflows.
});
archive.pipe(outputStreamBuffer);
// to be continued.....
const date = new Date();
const filesBaseName = `report_${date.toISOString().slice(0, 10)}--${date.getHours()}-${date.getMinutes()}_`;
files.map((b, i) => {
// const tempF = Buffer.from(b);
const name = filesBaseName + i;
archive.append(b, {name});
});
logger.debug(archive.pointer() + " total bytes");
archive.finalize();
outputStreamBuffer.end();
logger.debug("archiver has been finalized and the output file descriptor has closed.");
return outputStreamBuffer.getContents();
}
Значением файлов является массив размером два буфера (199000 байт). Когда я отлаживаю его, регистратор пишет «0 байт». и хотя _entriesCount (в отладке) shoes 2 выглядит так, как будто на самом деле нет данных. Более того, когда я смотрю на outputStreamBuffer.getContents (), я получаю «false» вместо реального содержимого zip.