我有以下代码,但是我收到HTTP 500错误,页面正被重定向到error.ejs。
但是,console.log(正文)工作正常。 res.render中出现了这个问题。我无法在控制台中看到任何错误(通过设置env =开发尝试)
var express = require('express');
var router = express.Router();
var request = require('request');
/* GET home page. */
router.get('/', function(req, res, next) {
// Set the headers
var headers = {
'Subscription-Key': 'XXXXXXXX',
'Content-Type': 'application/x-www-form-urlencoded'
}
// Configure the request
var options = {
url: 'http://External_Web_Service_REST_URL',
method: 'GET',
headers: headers
}
var result;
// Start the request
request(options, function(error, response, body) {
if (!error && response.statusCode == 200) {
// Print out the response body
result = body;
console.log(result); //This works
}
})
res.render('in', {
title: JSON.parse(result)
}); //Problem seen here, No logs printed
});
module.exports = router;
答案 0 :(得分:3)
这里的问题是res.render
在request
调用完成之前执行。
请记住request
是异步的。修复方法是在res.render
回调
request
....
router.get('/', function(req, res, next) {
...
request(options, function(error, response, body) {
if (!error && response.statusCode == 200) {
// Print out the response body
result = body;
console.log(result); //This works
//respond from here
res.render('in', {
.parse(result)
});
} else {
res.render('error');
}
})
})
module.exports = router;