reg*_*gie 6 javascript node.js express
我的app.js看起来像这样:
app = express();
setup.configure(app);
//...more stuff (e.g. 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变量声明为全局变量。如果我用声明var,则路由中会出现错误,因为app是undefined。如果我在路由文件中要求使用的应用程序var app = require('../app'),则会出现此错误:
错误:Route.get()需要回调函数,但得到了一个[object Undefined]
我想通过做适当的定义应用程序
var app = express();
但是,如何访问路线文件中的应用程序?
小智 10
根据Express 4.x文档,您可以使用req.app&通过请求和响应对象轻松访问app对象。res.app
代码示例:
server.js:
var path = require('path');
var express = require('express');
var app = express();
app.set('firends', 'nodejs, python');
var page = require(path.join(
    __dirname,
    'page'
));
app.use('', page);
app.listen(3000);
page.js:
var express = require('express');
var router = express.Router();
router.get('/test-route', function (req, res) {
    var app = req.app; // get app object
    res.send('firends are: ' + app.get('firends')); // get firends from app
});
module.exports = router;
提示:
node server.jshttp://127.0.0.1:3000/test-route你可以app在你的routes/api.js文件中传递你的对象:
应用程序.js
var api = require('./routes/api')(app); // pass 'app'
路线/api.js
module.exports = function(app) {     
  ...
  router.get('/myroute', app.sessionMW, function (req, res, next) { //... });
  ...      
})
| 归档时间: | 
 | 
| 查看次数: | 4575 次 | 
| 最近记录: |