无法在Express 4.0中将路由拆分为单独的文件

时间:2014-08-20 04:10:36

标签: javascript node.js express

我尝试将所有以/api结尾的路由重定向到manager.js,然后将其路由到/me

因此,对/me的完全限定请求应该看起来像/api/me。在Express 3.x中,将路由拆分为单独的文件很容易,但我在4.0中遇到了麻烦。

app.js

app.use('/api',require('./routes/manager'));

manager.js

var express = require('express');
var manager = express.Router();
module.exports = function() {    
    manager.use('/me',require('../routes/me'));
};

me.js

var express = require('express');
var me = express.Router();

module.exports = function() {

    me.route('/')
        .get(function(req,res){
            res.send("Welcome to Me");
    });

};

当我转到localhost:8080/api/me时,没有任何反应,页面会继续加载。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

您没有正确地通过Router个对象。请记住,这就是您要做的事情:

app.use('/api', express.Router());

但你现在正在做的是:

app.use('/api', function(){
    express.Router()
});

因此,您应该导出Router本身而不是导出函数。

<强> manager.js

var express = require('express');
var manager = express.Router();

manager.use('/me',require('../routes/me'));

module.exports = manager;

<强> me.js

var express = require('express');
var me = express.Router();

me.route('/').get(function(req,res){
    res.send("Welcome to Me");
});

module.exports = me;