Estoy tratando de crear una transmisión gzip que pueda reutilizar en otro lugar. Gzip funciona bien para comprimir un flujo de datos, pero quería refactorizar mi código para poder separar las preocupaciones. Al hacerlo, terminé con lo siguiente. Sin embargo, no puedo utilizar el flujo devuelto.
const zlib = require('zlib'); function compress(stream) { return new Promise((resolve, reject) => { const gzipStream = zlib.createGzip(); gzipStream.on('end', () => { resolve(gzipStream); }); gzipStream.on('error', (e) => { reject(e); }); stream.pipe(gzipStream); }); }Sin embargo, obtengo una salida vacía cuando uso la secuencia devuelta. Por ejemplo, comprimo un archivo de 50 mb con ceros y, después de usar mi nueva función, obtengo un archivo vacío.
async function handler(req, res) { const fileStream = fs.createReadStream("./test_50m"); const compressedStream = await compress(fileStream); compressedStream.pipe(fs.createWriteStream("./test_50m_output")); }Gracias