javascript - ExpressJS 到 ejs,出现 HTTP 500 错误

标签 javascript node.js express ejs

我有以下代码,但出现 HTTP 500 错误并且页面被重定向到 error.ejs。

但是,console.log(body) 工作正常。问题出现在 res.render 中。我在控制台中看不到任何错误(也尝试设置 env=development)

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 是异步的。解决方法是将 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;

关于javascript - ExpressJS 到 ejs,出现 HTTP 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296046/

相关文章:

javascript - D3.js "exporting"数据

javascript - 如何通过 Node.js 从 xml 中检索 URL?

javascript - Nodejs 项目无法在 heroku 中启动

javascript - Discord.js 的 EventEmitter Javascript 限制问题

json - 如何从 casperjs 将数据发送回 Node ?

javascript - 通过函数向克隆对象添加事件监听器

javascript - 在 Loopback 中使用 node.js 引用模型上的属性

node.js - AWS 中的 Lambda 开发 -?本地开发?或使用 AWS Web 控制台

javascript - JS promise : Allowing Propagation of Errors

arrays - 将文档推送到 Mongoose 模型数组中的子文档中