Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express.js中的req和res如何访问accross模块_Node.js_Connect_Express - Fatal编程技术网

Node.js Express.js中的req和res如何访问accross模块

Node.js Express.js中的req和res如何访问accross模块,node.js,connect,express,Node.js,Connect,Express,在使用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); 我想要的是登录处理代码写在一个

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

请求和响应对象是如何沿着模块传递的这应该是可行的:

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

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

TJ Holowaychuk在github页面上为express提供了一些很好的示例,下面是一个关于路由分离的示例:


哦,是的,这样一个愚蠢的错误,app.get应该只是注册回拨而不是执行it@Raks:请接受此答案单击右侧的勾号