Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
Error de Axios: ... .data.pipe no es una función

Básicamente, estoy tratando de usar axios para descargar una imagen de una URL, pero aparece este error:

TypeError: streamResponse.data.pipe is not a function

Mi función para hacer la descarga de esta imagen está a continuación ( tenga en cuenta que esto está dentro de una clase ):

 /** * Download poster */ async downloadPoster() { // Writer stream where we want to download the poster image const writer = fs.createWriteStream(this.poster.file); // This grabs the second part of the image url that we want const resultsResponse = await axios({ url: this.poster.url, method: 'GET', responseType: 'json', adapter: httpAdapter }); // Zero results if (resultsResponse.data.total_results <= 0) { logger.log(language[Config.language].posterNotFound + this.movie.title, 'error'); return false; } // Create the poster download URL var posterDownloadUrl = new URL(Config.api.posterUrl + resultsResponse.data.results[0].poster_path); const streamResponse = await axios({ url: posterDownloadUrl, method: 'GET', responseType: 'stream', adapter: xhrAdapter }); // Write data streamResponse.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve); writer.on('error', reject); }); }

Supongo que el adaptador para una respuesta de transmisión es el xhr. De todos modos, probé ambos adaptadores y ambos dan exactamente el mismo error. Sin embargo, ambas solicitudes suceden (puedo verlas en las herramientas de desarrollo).

Y para que no haya confusión, tengo los adaptadores importados en la parte superior del archivo:

const httpAdapter = require('axios/lib/adapters/http');
const xhrAdapter = require('axios/lib/adapters/xhr');

¿Qué podría estar haciendo mal aquí?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Aquí hay una versión más simple de su código.

Código:

 const downloadImage = async (url) => { // Writer stream where we want to download the image const writer = fs.createWriteStream("./image.png"); const streamResponse = await axios({ url, method: 'GET', // that the point!!! // change responseType to stream // pipe only work with 'stream' responseType: 'stream' }); // Write data streamResponse.data.pipe(writer); writer.on('finish', () => console.log("Finished")); writer.on('error', () => console.error("Error while dowloading image")); } const imageLink = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Image_created_with_a_mobile_phone.png/1200px-Image_created_with_a_mobile_phone.png"; downloadImage(imageLink);
over 4 years ago · Santiago Trujillo Relatório

0

Lo hice funcionar enviando la solicitud de descarga al hilo principal. No sé por qué, pero parece que no puede acceder a los datos de axios desde una secuencia en el archivo renderer.js . Sin embargo, ahora funciona después de echar un vistazo aquí:

https://www.electronjs.org/docs/api/ipc-main

over 4 years ago · Santiago Trujillo Relatório

0

si usa electrones , esta es una alternativa. en quasar funciona perfectamente. Recuerda poner main.js de electron nodeIntegration = true

 const fs = require('fs-extra'); import path from 'path'; let url = 'yourl.com'; axios({ url, method: 'GET', responseType: 'blob' }).then((res) => { let fileName='myfile.zip' const dir = path.dirname(__dirname); const Path = path.resolve(`${dir}/dir`, 'subdir', fileName); const output = fs.createWriteStream(Path); const ws = new WritableStream(output) let blob = new Blob([res.data], {type: 'application/zip'}) const stream = blob.stream(); //optional //stream.pipeTo(ws).then(console.log('Done!!!')); stream.pipeTo(ws); })
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda