提问人:dreyau 提问时间:1/12/2023 更新时间:1/12/2023 访问量:520
部署到 Heroku 时如何更改 localhost API URL?
How to change localhost API URL when deployed to Heroku?
问:
我已经部署了一个服务器端渲染 React 应用程序(捆绑了没有 CRA):
- 它有一个用于服务器端渲染的 Express 服务器(侦听端口 3000 或
process.env.PORT
) - 它有一个用于服务前端的 API 的快速服务器(侦听端口 8080 或
process.env.PORT
)
在 localhost 上,前端发出请求以获取数据,这非常有效。http://localhost:8080/api
据我了解,当应用程序处于生产状态时,基本 API URL 应该是应用程序的 URL(例如。https://myapp.herokuapp.com)而不是 ,所以我在我的代码中添加了以下更改:http://localhost:8080
- 如果应用处于 dev 状态,则前端调用
http://localhost:8080/api
- 如果应用程序处于 prod 中,则前端调用(我在 Heroku 中添加为配置变量)
https://myapp.herokuapp.com/api
https://myapp.herokuapp.com/
但是,它不起作用。我的应用已成功部署到 Heroku,并且 SSR 正确呈现,但 API 调用失败。(我也尝试过失败的)https://myapp.herokuapp.com/api:3000
当应用处于生产状态时,调用本地服务器的 API URL 应该是什么?
多谢!
答:
0赞
Berkeli
1/12/2023
#1
好吧,据我所知,Heroku 不允许多个端口,您将无法为 Web 打开 3000 和 为 api 打开 8080。
您可以在同一端口上同时提供服务,并路由到 api。/api
我曾参与过一个使用类似方法的项目,以下是代码:
app.use('/api', router); // every api route is in the router
app.use(express.static(staticDir));
它也被部署到 heroku。
如果您想看一看,请完整回购 - https://github.com/berkeli/breteau-dashboard/blob/main/server/utils/createServer.js
评论