Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.1K
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!