nodejs - использовать res.send - после завершения http-запроса [дублировать]

Вы также можете комбинировать два выражения env_keep в ответе Ахмеда Асвани в одном утверждении:

Defaults env_keep += "http_proxy https_proxy"

Вы также должны рассмотреть указание env_keep для только одна команда:

Defaults!/bin/[your_command] env_keep += "http_proxy https_proxy"

1
задан kharandziuk 20 July 2016 в 09:56
поделиться

2 ответа

Объект ответа суперагента не должен рассматриваться как поток, поскольку он может быть уже результатом автоматической сериализации (например, от JSON до объекта JavaScript). Вместо того, чтобы использовать объект ответа, в документации для данных трубопровода указано, что вы можете напрямую передать запрос суперагента в поток:

var app = require('express')()
var request = require('superagent')
app.get('/image', function(req, res, next) {
  request('http://s3.amazonaws.com/thumbnails.illustrationsource.com/huge.104.520060.JPG')
    .pipe(res)
})

app.listen(3001, function() {
  console.log('listen')
})
2
ответ дан E_net4 18 August 2018 в 19:00
поделиться
  • 1
    Благодаря! Оно работает. Но что делает функция _res.pipe в этом случае? – kharandziuk 20 July 2016 в 10:47
  • 2
    @kharandziuk Кажется, это зависит от реализации. Объект Response действительно является ReadableStream в Node.js, в соответствии с исходным кодом , но это частный API, который нельзя использовать извне. Ничто в документации не показывает, что объект ответа может использоваться как читаемый поток в любом случае. – E_net4 20 July 2016 в 10:55
  • 3
    Если вам все еще интересно, что происходит после _res.pipe, вот хороший комментарий: github.com/visionmedia/superagent/issues/… – E_net4 20 July 2016 в 14:06

С помощью Promises загрузите следующий путь:

const fs = require('fs');
const path = require('path');

const download = (url) => {
    return superagent.get(url)
    .then((response) => {
        const stream = fs.createWriteStream('file.ext');
        return response.pipe(stream);
    });
};
0
ответ дан treecoder 18 August 2018 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: