Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

104
Vistas
Intentando devolver un búfer de flujo desde una función

Estoy intentando crear un archivo zip que contiene un archivo csv y devolverlo desde una función como búfer. El código que tengo es el siguiente:

 const archiver = require('archiver'); const streamBuffers = require("stream-buffers"); createZipFromCsv(csv) { var myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({ initialSize: (100 * 1024), // start at 100 kilobytes. incrementAmount: (10 * 1024) // grow by 10 kilobytes each time buffer overflows. }); myWritableStreamBuffer.on('finish', () => { console.log(myWritableStreamBuffer.getContents()) return Promise.resolve(myWritableStreamBuffer.getContents()); }); const archive = archiver('zip'); archive.pipe(myWritableStreamBuffer); archive.append(csv, { name: 'csvName.csv' }); archive.finalize(); }

Y la llamada a la función:

 const buffer = await createZipFromCsv("some,csv,data"); console.log(buffer)

sin embargo, el registro de la consola del búfer después de la llamada a la función no está definido. El registro de la consola dentro de on finish devuelve un buen búfer, pero solo después del registro de la consola después de la llamada a la función. Estoy confundido por qué la función regresa antes de que el búfer haya terminado de escribir.

¡Cualquier ayuda apreciada!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe envolver su código en una promesa de devolución y luego resolver/rechazar adecuadamente. Aquí hay una forma de hacerlo:

 const archiver = require('archiver'); const streamBuffers = require("stream-buffers"); createZipFromCsv(csv) { return new Promise((resolve, reject) => { const myWritableStreamBuffer = new streamBuffers.WritableStreamBuffer({ initialSize: (100 * 1024), // start at 100 kilobytes. incrementAmount: (10 * 1024) // grow by 10 kilobytes each time buffer overflows. }); myWritableStreamBuffer.on('finish', () => { resolve(myWritableStreamBuffer.getContents()); }); myWritableStreamBuffer.on('error', reject); const archive = archiver('zip'); archive.pipe(myWritableStreamBuffer); archive.append(csv, { name: 'csvName.csv' }); archive.finalize(); }); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda