2

在使用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');
}

因此,当我使用 node example.js 启动服务器时,出现错误

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

Request 和 REsponse 对象如何通过模块传递

4

2 回答 2

5

这应该有效:

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

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

于 2011-04-18T12:02:55.870 回答
0

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

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

于 2011-04-26T15:22:07.160 回答