如何在Express.js中的模块之间访问req和res

时间:2011-04-18 11:59:11

标签: node.js connect express

使用express.js处理各种路由时我想将所有路由代码封装在一个单独的模块中,但是如何跨模块访问req和res对象,请参阅下面的代码 主文件examples.js编写如下

var app = require('express').createServer();
var login = require('./login.js');
app.get('/login', login.auth(app.req, app.res));
app.listen(80);

我想要的是登录处理代码是在一个名为login.js的单独模块/文件中编写的,那么问题是如何在login.js中访问响应对象。我认为以下代码不起作用,因为req和res的类型没有解决。

exports.auth = function(req, res) {
    res.send('Testing');
}

因此,当我用节点example.js启动服务器时,我收到错误

'无法调用未定义的方法发送'

Request和REsponse对象如何沿模块传递

2 个答案:

答案 0 :(得分:5)

这应该有效:

app.get('/login', login.auth);

您的示例尝试将login.auth函数的返回值作为请求的get处理程序传递。上面的代码将login.auth函数本身作为处理程序传递。

答案 1 :(得分:0)

TJ Holowaychuk在github页面上做了一些很好的例子,这是关于路线分离的例子:

https://github.com/visionmedia/express/tree/master/examples/route-separation