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

IT技术 node.js reactjs express
2022-07-05 01:38:18
app.use(function (req) {
  if (myCondition(req)) {
    express.static(`${__dirname}/REACT_APP_1`);
  } else {
    express.static(`${__dirname}/REACT_APP_2`);
  }
});

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

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)当前请求的参数传递给它来使用适当的。