node.js - Express.js 中如何跨模块访问 req 和 res?

标签 node.js express node.js-connect

在使用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 对象是如何沿着模块传递的?

最佳答案

这应该有效:

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

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

关于node.js - Express.js 中如何跨模块访问 req 和 res?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702509/

相关文章:

mysql - 数组推送在 Promise Node.js 中不起作用

javascript - Node.js Flatiron HTTPS 服务器

node.js - Jade 在输出中添加撇号

node.js - 使用 connect-multiparty 上传的文件返回空对象

node.js - 如何配置express js在生产模式下提供index.html服务?

ruby - nodeJs 中的 Redis-pubsub,执行 "HGET"命令

javascript - 如何在 Node.js 中使用 Promise 对 API 进行递归请求?

javascript - 从sequelize.query()函数初始化存储过程/函数

node.js - Mac OS X NodeJS : has no method 'router' error

node.js - Express 3、Apache 代理和基本路径