我有两条路线。全局变量route
内的第一条路线。在启动中间件时,第二条路径也会返回到该全局变量。
var route = require('./routes/first');
app.use(function(req, res, next) {
route = require('./routes/second');
next();
});
当接下来middlawe执行时,我仍然有第一条路线。 为什么我的第一个middlawe之前没有开始?
// route contain module from './routes/first'
app.use('/api', route);
但是,如果我使用不同的回调设计,则可以获得第二条路线......
// route contain module from './routes/second'
app.use('/api', function (req, res, next) {
return route(req, res, next);
});
./路由/ first.js
var express = require('express');
var route = express.Router();
route.get('/', function(req, res) {
res.send('First route');
});
module.exports = route;
./路由/ second.js
var express = require('express');
var route = express.Router();
route.get('/', function(req, res) {
res.send('Second route');
});
module.exports = route;
答案 0 :(得分:1)
因为它在调用app.use('/api', route);
时形成一个闭包。在父函数中更改它时,use
函数内的路径不会更改。试试这个
app.use(function(req, res, next) {
route = require('./routes/second');
app.use('/api', route);
next();
});