【问题标题】:Proxy in production React for fetch API express用于获取 API express 的生产 React 代理
【发布时间】:2019-08-28 15:58:39
【问题描述】:

我正在使用 React 应用程序开发应用程序。在开发环境时,我使用的是代理,但我正在部署应用程序,我发现代理不起作用。

我阅读了有关 http-proxy-middleware 的信息。它可以是一个解决方案,或者它也不起作用?

在不配置服务器重定向到其他端口的情况下,有什么方法可以做到这一点?

我需要继续提取到我的 API 服务器。

【问题讨论】:

    标签: javascript node.js reactjs create-react-app


    【解决方案1】:

    部署时,您的 React 应用程序通常不需要代理。要进行部署,您通常运行 npm run build,它会创建一个构建目录,其中包含部署所需的所有已编译 JavaScript 和 HTML 文件。然后由 Web 服务器(例如 NGINX)或您的后端应用程序提供这些服务。

    【讨论】:

    • 我使用代理请求 API
    • 部署后,您将使用 Web 服务器作为 API 的代理,它也可以为您的 react 应用程序提供服务。例如,使用 NGINX,您可以让它为您的 react 应用程序提供服务,并使用 proxy_pass 指令为您的 API 提供一个特殊路由作为代理。有关更多信息,请参阅此链接:docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy
    • 正如我所说,我不想配置 NGINX 和服务器。看我的回答!
    • 您说您不想使用重定向配置您的服务器,而我的解决方案没有。您能否更准确地陈述您的问题,以便人们将来更准确地帮助您?
    【解决方案2】:

    我发现没有配置服务器和 NGINX 的最佳方法是按照以下步骤操作:

    1. 构建前端
    2. 将文件夹移动到后端服务器。
    3. 将该代码放在路由之后:

      if (process.env.NODE_ENV === 'production') {
         app.use(express.static(`${__dirname}/yourFrontFolder/build`));
         app.get('*', (req, res) => {
          res.sendFile(`${__dirname}/yourFrontFolder/build/index.html`);
         })
         ...
      

      并构建您的后端代码并像前端一样访问您的后端端口。

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      相关资源
      最近更新 更多