Nodejs&res;未定义'内在要求

时间:2016-06-20 02:38:54

标签: javascript node.js cookies require

对于我的api,我想要一个单独的文件来设置cookie(使用cookie-parser)。但是,resreq未传递到所需文件...

index.js

 app.get('/api/user/:username', function(req, res) {   
 urlUsername = req.params.username;
 require('./set/cookie')
  }); 

组/ cookie.js

res.cookie('login_session', urlUsername) // returns 'res' not defined 

正如您所看到的,部分克服了这个问题,我设置了urlUsername。但肯定还有另一种方式:)?

由于

3 个答案:

答案 0 :(得分:2)

您需要像这样修改您的代码

======= set / cookie.js ==========

module.exports = function(res) { // accept res parameter
  res.cookie('login_session', urlUsername)
};

=========== index.js ===========

app.get('/api/user/:username', function(req, res) {   
  urlUsername = req.params.username;
  require('./set/cookie')(res); // pass res to module
}); 

答案 1 :(得分:0)

您需要使用" module.exports "在您创建的模块中,需要返回一个具有相同名称的对象。

答案 2 :(得分:0)

您需要修改您的cookie.js文件,以便它创建一个能够缓存的对象,并且您可以传递' res'对象,以便它在范围内可用

例如,您的cookie.js应如下所示:

module.exports.cookie = function(res){
    return {
        cache: function(){
            /*your cookie code*/
            return res.cookie('login_session', urlUsername);
        }
    };
}

这将返回一个具有缓存方法的对象,该对象具有传递给它的响应对象。然后,您可以通过调用:

来调用它
app.get('/api/user/:username', function(req, res) {   
    urlUsername = req.params.username;
    var cookie = require('./set/cookie').cookie(res);
    cookie.cache();
});