【问题标题】:How is req and res accessible accross modules in Express.js如何在 Express.js 中跨模块访问 req 和 res
【发布时间】:2011-04-18 11:59:10
【问题描述】:

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

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

【问题讨论】:

    标签: node.js connect express


    【解决方案1】:

    这应该可行:

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

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

    【讨论】:

    • 哦,是的,这么愚蠢的错误,app.get 应该只是注册回调而不执行它
    • @Raks:请接受这个作为答案(点击右边的勾)
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-02
      • 2021-10-07
      • 1970-01-01
      • 2021-10-08
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2012-11-20
      相关资源
      最近更新 更多