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

Car*_*izz 1 javascript node.js express

我正在尝试将我的所有路线重定向/api到一个manager.js然后将其路由到的路线/me.

所以,一个完全合格的请求/me应该是这样的/api/me.在Express 3.x中,将路由分割成单独的文件很容易,但我在4.0中遇到了麻烦.

app.js

app.use('/api',require('./routes/manager'));
Run Code Online (Sandbox Code Playgroud)

manager.js

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

me.js

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

module.exports = function() {

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

};
Run Code Online (Sandbox Code Playgroud)

当我去localhost:8080/api/me,没有任何反应,页面继续加载.

谢谢你的帮助!

log*_*yth 5

你没有完全正确地穿过这些Router物体.请记住,这是您要做的事情:

app.use('/api', express.Router());
Run Code Online (Sandbox Code Playgroud)

但你现在有效地做的是:

app.use('/api', function(){
    express.Router()
});
Run Code Online (Sandbox Code Playgroud)

因此,您应该导出Router自身,而不是导出函数.

manager.js

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

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

module.exports = manager;
Run Code Online (Sandbox Code Playgroud)

me.js

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

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

module.exports = me;
Run Code Online (Sandbox Code Playgroud)