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

时间:2020-10-23 06:47:53

标签: node.js reactjs express

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

尝试根据条件提供不同的版本,但它似乎无法按预期工作,我已经搜索过,但似乎没有与我的条件匹配的东西,我在做错什么吗?

1 个答案:

答案 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)参数。