如何在路由器文件中获取应用程序(在Node / Express应用程序中)

我的app.js看起来像这样:

app = express(); setup.configure(app); //...more stuff (eg database setup, middleware definition, etc.)... var api = require('./routes/api'); app.use('/api', api); module.exports = app; 

在路由/ api.js中,我有这样的中间件路由:

 router.get('/myroute', app.sessionMW, function (req, res, next) { //... }); 

JSLint标记一个错误,因为我声明appvariables为全局。 如果我声明与var ,我得到一个错误的路线,因为应用程序是undefined 。 如果我需要在应用程序的path文件var app = require('../app') ,我得到这个错误:

错误:Route.get()需要callback函数,但有一个[对象未定义]

我想通过这样做来正确定义应用程序

 var app = express(); 

但是,如何访问路线文件中的应用程序?

你可以在你的routes/api.js文件中传递你的app对象:

app.js

 var api = require('./routes/api')(app); // pass 'app' 

路线/ api.js

 module.exports = function(app) { ... router.get('/myroute', app.sessionMW, function (req, res, next) { //... }); ... })