![](/img/trans.png)
[英]Node.js / Express.js - How to override/intercept res.render function?
[英]Node.js & Express.js/Jade res.render returns res.render is not a function
到目前为止,我还无法找到此错误的答案,并且想知道它是否与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'
});
};
从我的route.js中调用了homelist函数,然后通过请求中的requestOptions中的查询从我的API中调用了API。
但是,当请求回调被触发并使用API变量主体调用renderHomepage时,我得到了错误:
res.render('jade-template', {
^
TypeError: res.render is not a function
我的所有路线均已设置并经过测试。 有人对此有解决方案吗?
该res
在参数renderHomepage
功能( request
的回调)是不一样的res
快递路线!
将您的呼叫request
更改为以下内容:
request(requestOptions, function(err, serverRes, body) {
renderHomepage(req, res, body);
});
然后,对您对/api/locations
request
的响应为serverRes
,而您发送给客户端的响应为res
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.