【发布时间】:2020-05-07 03:11:22
【问题描述】:
背景
后端是在 Heroku 上运行的仅限 Rails API 的应用程序(在本地开发期间位于端口 5000)。
前端由 create-react-app 制成,托管在 AWS CloudFront 后面的 S3 存储桶中(在本地开发期间位于端口 3000)。
开发设置
在本地,前端的package.json 包括:
"proxy": "http://localhost:5000",
这让我可以运行一个 Javascript 命令,例如……
await fetch(`/someEndpoint`)
...在localhost:3000 上运行的开发服务器转发来自http://localhost:5000/someEndpoint 的响应。这很好用,我的前端成功处理了响应????。
生产问题
现在我正在生产中运行。
如果我什么都不做,同一行将尝试从 https://asdfasdfasdf.cloudfront.net/someEndpoint 加载,这将是 404。
相反,我想配置应用程序,以便在生产中它会访问运行 Rails API 的 Heroku 应用程序https://my-awesome-rails-app.herokuapp.com/someEndpoint。
问题
(1) 在不改变代码的情况下是我想要的吗
await fetch(`/someEndpoint`)
通过将前端配置为使用my-awesome-rails-app.herokuapp.com,或者通过配置 CloudFront 将一些请求转发到 S3 而将其他请求转发到 Heroku?
(2) 如果两者都不可能,我应该如何编写fetch() 命令让我在生产中使用Heroku,但在本地开发期间仍保持本地代理行为?可能会使用一些环境变量?
【问题讨论】:
标签: reactjs amazon-web-services heroku amazon-cloudfront create-react-app