1

I'm trying to redirect all my routes ending with /api to a manager.js which will then route it to /me.

So, a fully qualified request to /me should look like /api/me. Splitting routes up into separate files was easy in Express 3.x, but I'm having trouble in 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");
    });

};

When I go to localhost:8080/api/me, nothing happens, the page keeps loading.

Thanks for any help!

Carpetfizz
  • 8,707
  • 22
  • 85
  • 146

1 Answers1

5

You are not quite properly passing through the Router objects. Keep in mind that this is what you are trying to do:

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

but what you are effectively doing right now is this:

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

So you instead of exporting a function, you should be exporting the Router itself.

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;
loganfsmyth
  • 156,129
  • 30
  • 331
  • 251