app.use(function (req) {
if (myCondition(req)) {
express.static(`${__dirname}/REACT_APP_1`);
} else {
express.static(`${__dirname}/REACT_APP_2`);
}
});
尝试根据条件提供不同的版本,但它似乎无法按预期工作,我已经搜索过,但似乎没有与我的条件匹配的东西,我在做错什么吗?
答案 0 :(得分:1)
express.static()
返回中间件函数。该中间件函数必须在处理特定路由时被调用,以实际执行一些有用的操作。您正在创建中间件函数,但从未真正调用它,因此从未看到任何结果。
您可以这样解决:
// create our two express.static() middleware handlers
const handler1 = express.static(`${__dirname}/REACT_APP_1`);
const handler2 = express.static(`${__dirname}/REACT_APP_2`);
app.use(function (req, res, next) {
if (myCondition(req)) {
handler1(req, res, next);
} else {
handler2(req, res, next);
}
});
请注意,我从express.static()
主体中拉出了两个app.use()
处理程序的创建,因为不需要在app.use()
内一遍又一遍地创建它们。您可以创建它们每个一次,然后只需根据您的条件使用适当的一个,方法是调用它,并将其传递给当前请求的(req, res, next)
参数。