【问题标题】:Conditionally serve React static files with Node (express.static)有条件地使用 Node (express.static) 提供 React 静态文件
【发布时间】:2020-10-23 06:47:53
【问题描述】:
app.use(function (req) {
  if (myCondition(req)) {
    express.static(`${__dirname}/REACT_APP_1`);
  } else {
    express.static(`${__dirname}/REACT_APP_2`);
  }
});

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

【问题讨论】:

    标签: node.js reactjs express


    【解决方案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);
      }
    });
    

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

    【讨论】:

    • 如何再次添加res.sendFile?因为当我这样做后添加时,它会给出“标头已发送”错误。将其添加为单独的中间件也不起作用。
    • @Abhijit - 请编写您自己的问题并展示您现有的代码,以便人们可以帮助您。
    • 对此表示歉意。我提出了一个新问题:stackoverflow.com/questions/67160631/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多