【发布时间】:2020-07-06 21:08:24
【问题描述】:
我有一个使用 Create React App 构建的应用程序,我想使用 Node.js 作为后端从数据库加载数据。基本上,我希望 Node 加载数据,然后使用 Create React App 来处理它。为此,我使用了本教程:https://www.freecodecamp.org/news/how-to-make-create-react-app-work-with-a-node-backend-api-7c5c48acb1b0/。我已经建立了一个工作开发环境,其中我有一个客户端文件夹中的所有 Create React App、一个加载数据的 server.js(如果相关,来自 MS SQL Server),以及一个在 client/package.json 中设置的代理( CRA 的 package.json)用于节点应用程序正在运行的端口(在我的情况下为 5000)。然后我运行 yarn dev,这两个服务器一起运行并相互通信,一切正常。
问题在于部署。我的组织使用 IIS。据我所知,Node 和 IIS 并不是理想的组合,但 IIS 是我们用于一切的工具。我希望 server.js 和 CRA 位于同一个文件夹中,并且基本上尽可能像一个应用程序一样运行(我知道 Node 需要运行自己的服务器)。我还想要一个可以轻松更改或移动到另一台机器的设置。到目前为止我所做的是:
- 使用客户端文件夹设置单个应用程序,这是 CRA 的构建,然后是根目录中的 server.js
- 在我的反应代码中,对 http://localhost:5000 进行了 API 调用(在开发环境中我可以执行 fetch('api/somestuff') 但要使其在生产中工作,我需要执行 fetch('http ://localhost:5000/api/somestuff'))
- 安装了 pm2 并用它来运行 server.js 并启动 Node 服务器
这行得通,但是我想知道这是否是做事的最佳方式。这在我的本地机器上工作,但我不知道当我把它放在我们的生产机器上会发生什么。 Node 服务器会阻塞其他应用程序吗?无论如何它会继续运行还是会崩溃?最终,这将部署在多服务器环境中,我们有 2 台负载均衡的服务器,它们具有相同的代码,通过 F5 形成一个单一的 URL——这会影响什么吗?
我对编程很陌生,所以请耐心等待,如果这个问题的措辞令人困惑,我很抱歉。
【问题讨论】:
-
我试过这个,但无法让我的网站重定向我的 api 请求,我希望 /api/somestuff 的请求转到 localhost:5000/api/somestuff 但它一直在 localhost/api/ 中查找一些东西。我创建了一个匹配模式 ^(api.*) 的规则并重写了 URL localhost:5000{R:0} 但这不起作用,我还尝试了其他几个版本。