2016-06-10 54 views
0

我还没有能够找到这个错误的答案,因为它还想知道它是否与版本4有关快递Node.js&Express.js/Jade res.render返回res.render不是函数

controller.js

var request = require('request'); 

var apiOptions = { 
    server : "http://localhost:3000" 
}; 
if(process.env.NODE_ENV === 'production') { 
    apiOptions.server = "https://heroku_path"; 
} 



module.exports.homelist = function(req, res) { 
    var requestOptions, path; 
    path = '/api/locations'; 
    requestOptions = { 
     url: apiOptions.server + path, 
     method: "GET", 
     json: {}, 
     qs : { 
      lng : -117.929835, 
      lat : 33.614675, 
      max : 30000 
     } 
    }; 
    request(requestOptions, function(err, res, body) { 
     renderHomepage(req, res, body); 
});  

var renderHomepage = function(req, res, body) { 
    res.render('jade-template', { 
     title: 'I'm a main title', 
     pageHeader: { 
      title: 'I'm a title', 
      strapline: 'I'm a strapline' 
     }, 
     locations: body, 
     sidebar: 'yadda yadda' 
    }); 
}; 

的homelist功能会从我的routes.js称为是又在哪里我的API会从我与requestOptions发现查询请求调用。

然而,当请求回调被触发,renderHomepage与API变体调用我的错误:

res.render('jade-template', { 
    ^
TypeError: res.render is not a function 

我所有的路由建立和测试的罚款。有没有人有这个解决方案?

回答

2

renderHomepage函数(request的回调函数)中的参数res与快速路由的res不一样!

更改您的通话request喜欢的东西:

request(requestOptions, function(err, serverRes, body) { 
    renderHomepage(req, res, body); 
}); 

然后你request/api/locations的响应serverRes,和你的客户你发送的响应res

+0

就是这样!谢谢。 –