reactjs - 如何合并 React App 和 Express App 以部署在单个项目上?
问题描述
我最近创建了 Express 和 MongoDB API,之后,我将该 API 成功连接到我的 React 应用程序并且运行良好。但是现在部署期间发生的一种情况我需要分别部署两个项目意味着我需要两个托管计划。所以,我希望这两个项目在同一主机上运行。可能吗?如何?
解决方案
任何 React 应用程序的构建都会创建(除非使用 webpack-dev-server 来编译它)由静态文件组成的输出:脚本包和引用<script>
标签中包的 .html 文件。
这些文件可以并且应该在生产构建中复制到 Express。然后,您在一台主机上拥有一台服务器。当 React 应用程序在客户端(例如浏览器)中运行时,它会从单一来源获取所有内容,包括 .html 文件、脚本包、API 响应:Express 后端/服务器。顺便说一句,这排除了许多人在 SO 上询问的 CORS 问题的任何可能性。
示例,例如演示所有这些的样板项目。
如果执行命令:
git clone https://github.com/winwiz1/crisp-react.git
cd crisp-react
yarn install && yarn start:prod
然后将您的浏览器指向localhost:3000
,您将在浏览器中运行 React 应用程序,它从一个 Express 后端获取所有内容。
crisp-react有两个子目录:client
带有 React 客户端应用程序和server
带有 Express 后端。build 命令将构建工件从一个子目录复制到另一个子目录。所以你甚至可以client
在构建后重命名或删除子目录,它不会影响 Express 后端。
推荐阅读
- docker - Docker 卷挂载到 Kubernetes 卷
- apache-spark - Spark SQL中的哈希函数 - 不同的字符串都具有相同的哈希值
- excel - 如何在 VBA 中循环这些数据?
- sql - 如何在 SQL 的列表中找到不同的值并将其返回到列表中?
- android - HUAWEI MatePad Pro运行8G内存,系统只运行一个App。运行小于1G时App崩溃?
- sql - SCD 类型 2 的 MERGE 语句正在创建重复行?
- visual-studio-code - 没有自定义和学习部分的欢迎屏幕
- docker - Docker Container 无法访问 Docker 主机网络
- api - Chainlink 大响应尝试从任何 Api 返回字符串
- list - 来自 YAML 列表的访问元素