Nodejs 'res is not defined' 里面需要

Nodejs 'res is not defined' inside require

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

index.js

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

set/cookie.js

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

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

谢谢

您需要在您创建的模块中使用“module.exports”,因为需要returns一个同名对象。

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

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

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

此 returns 对象具有缓存方法,并且已将响应对象传递给它。然后,您可以通过以下方式调用它:

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

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

======= 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
});