Javascript Can';t nest HTTP使用node.js进入另一个
我想做一个非常简单的任务,但我被卡住了 场景如下: 对api发出get请求后,我想从某个外部站点发送http.get,然后将此外部站点的响应发送回原始api请求 显然,这些调用是异步的,因此在将字符串loremParagraph发送回api之前无法正确加载 我还收到错误:错误:发送邮件后无法设置邮件头。 这是我的密码:Javascript Can';t nest HTTP使用node.js进入另一个,javascript,node.js,http-get,Javascript,Node.js,Http Get,我想做一个非常简单的任务,但我被卡住了 场景如下: 对api发出get请求后,我想从某个外部站点发送http.get,然后将此外部站点的响应发送回原始api请求 显然,这些调用是异步的,因此在将字符串loremParagraph发送回api之前无法正确加载 我还收到错误:错误:发送邮件后无法设置邮件头。 这是我的密码: module.exports = function(app, express) { var myLoremRouter = express.Router(); var lor
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
两次。这就是你的错误所在。一旦响应被发送,您就不能修改它。是的,可能是重复的。就是这样!非常感谢,你解决了我的问题:)
myLoremRouter.get('/', function(req, res) {
var body = '';
http.get({
host: 'www.faux-texte.com',
port: 80,
path: '/text-random-1.html'
}, function(resp) {
resp.on('data', function(chunk) {
body += chunk;
});
resp.on('end', function(chunk) {
var $ = cheerio.load(body);
loremParagraph = $('div.Texte').text();
res.json({ message: loremParagraph });
});
})
.on('error', function(e) {
// handle/send error
res.send(/*...*/);
});
});