使用Node(express.static)有条件地提供React静态文件


app.use(function (req) {
if (myCondition(req)) {
express.static(`${__dirname}/REACT_APP_1`);
} else {
express.static(`${__dirname}/REACT_APP_2`);
}
});

试图根据条件提供不同的构建,但似乎没有按预期工作,我已经搜索过了,但似乎什么都不符合我的条件,我做错了吗?

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

注意,我从app.use()主体中提取了两个express.static()处理程序的创建,因为不需要在app.use()内部反复创建它们。您可以创建它们中的每一个一次,然后根据您的条件使用适当的一个,方法是调用它并将当前请求的(req, res, next)参数传递给它。

最新更新