我最近创建了Express和MongoDB API,此后,我将该API成功连接到了我的React Application,并且运行良好。但是,在部署期间发生的一种情况现在我需要分别部署两个项目,这意味着我需要两个托管计划。因此,我希望两个项目都在同一主机上运行。可能吗?以及如何?
答案 0 :(得分:1)
任何React应用程序的构建都会创建(除非使用webpack-dev-server进行编译)输出,该输出包含静态文件:脚本包和引用<script>
中的包的.html文件。标签。
可以并且应该将这些文件复制到 production 版本的Express中。然后,您在一台主机上有一台服务器。当React应用程序在客户端(例如浏览器)中运行时,它会从单一来源获得所有内容,包括.html文件,脚本包和API响应:Express后端/服务器。顺便说一下,这排除了出现CORS问题的可能性,因此许多人都在SO上对此进行询问。
示例,例如可以演示所有内容的样板project。
如果执行命令:
git clone https://github.com/winwiz1/crisp-react.git
cd crisp-react
yarn install && yarn start:prod
,然后将浏览器指向localhost:3000
,您将在浏览器中运行React应用,并且它从一个Express后端获得了所有内容。
crisp-react有两个子目录:带有React客户端应用程序的client
和带有Express后端的server
。 build命令将构建工件从一个子目录复制到另一个子目录。因此,您甚至可以在构建后重命名或删除client
子目录,这不会影响Express后端。