I have two routes. First route inside global variable route
. In start middleware, second route returns into that global variable also.
var route = require('./routes/first');
app.use(function(req, res, next) {
route = require('./routes/second');
next();
});
And when executed next middlawe I still have the first route. Why did my first middlawe does not start before?
// route contain module from './routes/first'
app.use('/api', route);
But, if I use different design of callback, it is possible to get a second route...
// route contain module from './routes/second'
app.use('/api', function (req, res, next) {
return route(req, res, next);
});
./routes/first.js
var express = require('express');
var route = express.Router();
route.get('/', function(req, res) {
res.send('First route');
});
module.exports = route;
./routes/second.js
var express = require('express');
var route = express.Router();
route.get('/', function(req, res) {
res.send('Second route');
});
module.exports = route;
Because it forms a closure when it calls app.use('/api', route);
. The route inside the use
function does not change when you change it in the parent function. Try this
app.use(function(req, res, next) {
route = require('./routes/second');
app.use('/api', route);
next();
});