如何在路由器文件中获取应用程序(在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标记一个错误,因为我声明app
variables为全局。 如果我声明与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) { //... }); ... })