繁体   English   中英

Node.js和Express.js / Jade res.render返回res.render不是函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM