ExpressJS ejs,得到HTTP 500错误

我有下面的代码,但我得到HTTP 500错误,并且页面被redirect到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; 

这里的问题是res.renderrequest调用完成之前被执行。 记住request是asynchronous的。 解决方法是在requestcallback中移动res.render

 .... 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;