В вашем примере вы использовали модуль Base64encode
, который уже выкачивает строки - так что в приведенном выше примере произошел сбой (если только это не произошло из-за ожидания верхнего уровня). На самом деле вам не нужно преобразовывать чанки в строки, так как они уже были строками, поэтому простая конкатенация подойдет.
На самом деле все может быть в 10 раз проще, если использовать только потоки node.js:
const Axios = require('axios')
const {PassThrough} = require("stream");
const url = 'https://unsplash.com/photos/AaEQmoufHLk/download?force=true';
(async function() {
const response = await Axios({
url,
method: 'GET',
responseType: 'stream'
});
// we just pipe the data (the input carries it's own encoding)
// to a PassThrough node stream that outputs `base64`.
const chunks = response.data
.pipe(new PassThrough({encoding:'base64'}));
// then we use an async generator to read the chunks
let str = '';
for await (let chunk of chunks) {
str += chunk;
}
// et voila! :)
console.log(str);
})();