我还没有找到这个错误的答案,我想知道它是否与Express的第4版有关
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'
});
};
从我的routes.js调用homelist函数,然后在我的请求中使用requestOptions中的查询调用我的API。
然而,当触发请求回调并且使用API变量体调用renderHomepage时,我收到错误:
res.render('jade-template', {
^
TypeError: res.render is not a function
我的所有路线都已设置好并且经过测试。有人有解决方案吗?
答案 0 :(得分:2)
res
函数中的renderHomepage
参数(request
的回调)与快速路由的res
不同!
将您的通话request
更改为:
request(requestOptions, function(err, serverRes, body) {
renderHomepage(req, res, body);
});
然后,对request
至/api/locations
的回复为serverRes
,您发送给客户的回复为res
。