我不知道是否可能,但是根据条件,我需要在中间件中动态加载路由文件。
在这里,我们有在第一个请求中表现出色的代码,但是似乎在下一个请求中,他进入了有条件但不使用正确文件的正确位置,似乎他在使用缓存文件或先前请求的内容。
let routesApp = require('./routes-app');
let routesWeb = require('./routes-web');
app.use((req, res, next) => {
const regex = new RegExp(pattern, 'i')
if (regex.test(req.headers['agent-type'])) {
app.use('/', routesWeb)
} else {
app.use('/', routesApp)
}
return next()
})
我如何使它起作用?
答案 0 :(得分:0)
调用app.use
时,传递给它的中间件将为此路径注册,随后的请求将由该路径处理。
处理您正在做的事情的一种方法是定义一个中间件,该中间件根据需要有条件地委派给您的Web或移动中间件。
示例代码:
let routesApp = require('./routes-app');
let routesWeb = require('./routes-web');
app.use('/', (req, res, next) => {
const regex = new RegExp(pattern, 'i')
if (regex.test(req.headers['agent-type'])) {
routesWeb(req, res, next);
} else {
routesApp(req, res, next);
}
})