NodeJS 如何在Express.js中跨模块访问req和res?

tvokkenx  于 2023-05-28  发布在  Node.js
关注(0)|答案(2)|浏览(141)

在使用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启动服务器时,我得到错误:
'无法调用未定义的方法send'
请求和响应对象是如何沿着模块传递的?

lmvvr0a8

lmvvr0a81#

这应该可以工作:

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

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

e7arh2l6

e7arh2l62#

TJ Holowaychuk在github页面上为express做了一些很棒的例子,这里是关于路由分离的例子:
https://github.com/visionmedia/express/tree/master/examples/route-separation

相关问题