如何清除中间件加载以进行动态路由加载?

How to clear middleware loading to make dynamic route loading?

我不知道是否可行,但我需要根据条件在中间件​​中动态加载路由文件。

这里的代码在第一个请求中表现良好,但似乎在下一个请求中,他进入了条件的正确位置但没有使用正确的文件,似乎他使用了缓存文件或以前请求的东西...

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()
})

我如何让它工作?

当您调用 app.use 时,传递给它的中间件会为该路径注册,后续请求将由该路径处理。

处理您正在做的事情的一种方法是定义一个中间件,它根据需要有条件地委托给您的网络或移动中间件。

示例代码:

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);
    }
})