ExpressJS到ejs,收到HTTP 500错误

时间:2016-07-10 20:08:34

标签: javascript node.js express ejs

我有以下代码,但是我收到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;

1 个答案:

答案 0 :(得分:3)

这里的问题是res.renderrequest调用完成之前执行。 请记住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;