使用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对象如何沿模块传递
答案 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