Nodejs的res没有被定义在内部需求

对于我的api我想要一个单独的文件来设置一个cookie(使用cookieparsing器)。 但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工作。 但肯定还有另一种方式:)?

谢谢

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

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

您需要在您创build的模块中使用“ module.exports ”,因为require会返回具有相同名称的对象。

您需要修改您的cookie.js文件,以便它创build一个能够caching的对象,并且您可以将“res”对象传递给该对象,以使其可用于作用域

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

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

这将返回具有caching方法的对象,并将响应对象传递给它。 然后你可以调用这个方法:

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