Skip to content

Axios error: … .data.pipe is not a function

So I am basically trying to use axios to download a image from a url, but I get this error:

TypeError: is not a function

My function for doing this image download is below (note that this is inside a class):

 * 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 ( <= 0) {
        logger.log(language[Config.language].posterNotFound +, 'error');
        return false;

    // Create the poster download URL
    var posterDownloadUrl = new URL(Config.api.posterUrl +[0].poster_path);

    const streamResponse = await axios({
        url: posterDownloadUrl,
        method: 'GET',
        responseType: 'stream',
        adapter: xhrAdapter

    // Write data;

    return new Promise((resolve, reject) => {
        writer.on('finish', resolve);
        writer.on('error', reject);


I assume that the adapter for a stream response is the xhr one. Anyways, I have tried both adapters and both gives the exact same error. Both requests does happen though (I can see them in the devtools).

And so there’s no confusion, I have the adapters imported at the top of the file:

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

What could I be doing wrong here?


Got it working by sending the download request over to the main thread. Don’t know why, but seems you can’t access the axios data from a stream in the renderer.js file. Got it working now though after having a look here: