【发布时间】:2023-04-07 18:10:01
【问题描述】:
您好,我在不同的端口上但在同一主机上运行我的前端 (create-react-app) 和后端服务器 (express.js)。
例如:前端在127.0.0.1:3000,后端在127.0.0.1:3003。
在我的 package.json 中:
{...
"proxy": "http://localhost:3003",
...}
在我没有将应用程序迁移到远程服务器之前一切正常。
当我尝试向服务器发送 http 请求 (axios) 时(可能是由于代理设置错误),我的应用程序开始意外刷新。
所以我在35.125.320:10:3000 上运行了前端应用程序,而在35.125.320:10:3003 上运行了服务器。我的 http 请求被意外取消了。 (我检查了网络)。所以我将代理设置更改为
{...
"proxy": "35.125.320:10:3003",
...}
但无论如何,当我尝试制作 http req 时,我的应用程序仍然令人耳目一新。在服务器上。我认为问题是我无法访问我的快速后端服务器。所以代理转发我的请求很糟糕。
更新
场景:(我做了两个帖子请求)
1) 第一个请求仍然通过(应用未刷新)
2) 通过了相同的请求(但有时会刷新应用)
3) 第二个仍然被浏览器取消。
问题
当我的前端运行在不同端口但在同一服务器和域上时,我的前端如何通过代理与后端服务器通信??
感谢您的回答。
【问题讨论】:
-
构造请求时是否使用了相对url?
-
是的,因为我认为它是由代理处理的
-
那么,你为什么要使用两个独立的服务器呢?您可以使用 Express 来提供您要构建的文件。 CRA 将其服务器用于开发目的。 “公众”是什么意思?你不是说生产吗?
-
@devserkan .. 我运行 npm build 然后将此构建作为 express.js 中的静态文件提供。这行得通,但我想知道我尝试使用的这个解决方案是否正确或者有标准的方法来做到这一点。我从来没有在节点服务器上部署前端应用程序。所以我在寻找合适的方法:)。
-
我也是一名学习者,使用的方式与您描述的相同。我不确定这是标准还是最佳方式,但由于我们不需要开发服务器进行生产,因此使用 Express 静态地为我们的前端提供服务对我来说似乎很合乎逻辑。
标签: node.js reactjs express proxy react-create-app