2016-06-10 62 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

就是這樣!謝謝。 –