私は非常に単純なタスクをやりたいのですが、まだ私は立ち往生しています!node.jsで別のHTTP GETをネストすることはできません
シナリオは、このようなものです:私のAPIにGET要求の後
、私はいくつかの外部サイトからhttp.getしたい、その後、元のAPIリクエストに、この外部サイトからの応答を送り返します。
明らかに、呼び出しは非同期なので、loremParagraphという文字列は正しく読み込まれずにapiに返されます。
エラー:エラー:送信後にヘッダーを設定できません。ここで
は私のコードです:
module.exports = function(app, express) {
var myLoremRouter = express.Router();
var loremParagraph = '';
//HTTP GET accessed at localhost:8081/mylorem
myLoremRouter.get('/', function(req, res) {
// Fetch one paragpraphlorem ipsum text from http://www.faux-texte.com/text-random-1.htm
http.get("http://www.faux-texte.com/text-random-1.html", function(resp) {
resp.on('data', function(chunk) {
// console.log('BODY: ' + chunk);
var $ = cheerio.load(chunk);
loremParagraph = $('div.Texte').text();
console.log(loremParagraph);
// console.log(resp.status);
});
})
// If any error has occured, log error to console
.on('error', function(e) {
console.log("Got error: " + e.message);
});
//Finally send the result back to the api call
res.json({ message: loremParagraph });
});
return myLoremRouter;
};
あなたは '二回res.json'呼んでいます。それがあなたにエラーを与えるものです。応答が送信されると、それを変更することはできません。 – Aron
[非同期呼び出しからの応答を返すにはどうすればよいですか?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –