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

292
Vistas
Gatsby - Intentando generar y descargar un archivo de texto

Logré crear una función que genera un archivo de texto que el usuario puede descargar.

Funciona perfectamente cuando ejecuto la compilación de desarrollo de Gatsby, pero cuando compilo para producción aparece el error: WebpackError: ReferenceError: Blob no está definido

Si luego trato de agregar import {Blob} desde "buffer" , obtengo en su lugar: WebpackError: ReferenceError: la ventana no está definida y tampoco funciona con el desarrollo de Gatsby.

Por lo que logré descubrir es que ni siquiera se supone que debo usar Blob con Node en absoluto, y en su lugar uso Buffer, pero estoy completamente perdido con eso porque no parece reemplazar a Blob directamente. Además, ¿por qué funciona en mi compilación de desarrollo pero no en producción? ¿Siente que debería estar cerca de una solución?

Aquí está mi función:

 export function Download() { const data = new Blob(["Hello world"], { type: "text/plain;charset=utf-8", }); const downloadLink = window.URL.createObjectURL(data); return downloadLink; } export default Download;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Por lo que he logrado averiguar es que ni siquiera debo usar Blob con Node en absoluto

Eso es parcialmente cierto. Tiene razón cuando dice que Blob no usa Node en absoluto, sin embargo, cuando ejecuta gatsby build , su código se analiza y se empaqueta en un servidor de Node, por eso rompe el código. En otras palabras, su código es interpretado por el servidor Node, donde no hay una window u otros objetos globales (como un document ) porque aún no están definidos. Por otro lado, cuando ejecutas gatsby develop , tu código es interpretado por el navegador, donde está la window y existen otros objetos globales.

Puede omitir esto fácilmente agregando la siguiente condición:

 if(typeof window !== "undefined")

Esto verificará si está en el servidor o en el cliente.

Intenta usar:

 export function Download() { if(typeof window !== "undefined"){ const data = new Blob(["Hello world"], { type: "text/plain;charset=utf-8", }); const downloadLink = window.URL.createObjectURL(data); return downloadLink; } } export default Download;
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