¿Cómo se puede acceder a req y res a través de los módulos en Express.js?

Al usar Express.js para manejar varias rutas, quiero encapsular todo mi código de ruta en un módulo separado, pero ¿cómo puedo acceder al objeto req y res a través de los módulos? Vea el código a continuación

var app = require('express').createServer(); var login = require('./login.js'); app.get('/login', login.auth(app.req, app.res)); app.listen(80); 

Lo que quiero es que el código de manejo de inicio de sesión esté escrito en un módulo / archivo separado llamado login.js, la pregunta entonces es cómo será accesible el objeto de respuesta en login.js. Creo que el siguiente código no funcionará porque el tipo de req y res no se resuelve.

 exports.auth = function(req, res) { res.send('Testing'); } 

Por lo tanto, cuando inicio el servidor con node example.js, aparece el error

‘No se puede llamar al método de envío de indefinido’

¿Cómo se pasan los objetos de solicitud y respuesta en módulos?

Esto debería funcionar:

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

Su ejemplo intentaba pasar el valor de retorno de la función login.auth como controlador de obtención para la solicitud. Lo anterior, en cambio, pasa la login.auth función login.auth como el controlador.

TJ Holowaychuk hizo algunos buenos ejemplos para express en la página de github, aquí está el de la separación de rutas:

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