【问题标题】:node.js architecture - how to share middleware (bodyparser)node.js 架构——如何共享中间件(bodyparser)
【发布时间】:2015-10-14 00:37:22
【问题描述】:

为了将“app.js”与其他功能区分开来,我重组了我的节点应用程序,如下所示:

app.js

// declare dependencies, etc
var server = http.createServer(app);

var controllers = require('./controllers');
controllers.set(app, server, passport);

控制器/index.js

var socketController = require('./socketController.js');
var passportController = require('../config/passport.js');
var routeController = require('./routeController.js');
var routes = require('../routes');

// server side data
var sessions = [];
var userPrivileges = [];

module.exports.set = function(app, server, passport) {
    /**
     * Routes
     */
    // serve index and view partials
    app.get('/', routes.index);
    app.get('/partials/:name', routes.partials);

    // redirect all others to the index (HTML5 history)
    app.get('*', routes.index);

    routeController.set(app, passport, sessions, userPrivileges);
    socketController.set(app, server, sessions, userPrivileges);
    passportController.set(passport);
};

控制器/routeController.js

module.exports.set = function(app, passport, sessions, userPrivileges) {

    // route to test if the user is logged in or not
    app.get('/loggedin', function(req, res) {
        res.send(req.isAuthenticated() ? req.user : '0');
    });
};

我的问题是当我调用 GET /loggedin 时,它返回了一堆 HTML - 似乎 bodyparser 没有被激活。我试过在routeController.js 中声明bodyparser,但这似乎没有帮助。我如何在这些不同的文件之间共享这个中间件?

【问题讨论】:

    标签: node.js express body-parser


    【解决方案1】:

    您的 app.get('*', routes.index); 路由在请求到达任何其他路由之前处理该请求。您可以尝试在所有其他路线之后移动该路线

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-24
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多