繁体   English   中英

在具有多个环境的 s3 存储桶上部署 React 应用程序

[英]Deploying a react application on an s3 bucket with multiple environments

我正在使用 heroku 来部署 nodejs 后端,并使用 amazon s3 来部署 React 应用程序的静态文件,因此存储在 s3 存储桶上的前端向 heroku 后端发出请求。

一旦我为 heroku 创建了我的暂存环境,我只需要创建一个新的存储桶并连接新的 url,以便暂存前端可以正确地向暂存后端发出请求,我最终在我的反应应用程序上得到了这样的东西:

// index.js
let BASE_API_URL;

if (process.env.NODE_ENV === "production") {
  BASE_API_URL = "https://myproductionapiurl.com";
else if (process.env.NODE_ENV === "staging") {
  BASE_API_URL = "https://mystagingapiurl.s3-website.us-east-2.amazonaws.com";
} else {
  BASE_API_URL = "https://someotherurl.com";
}

axios.defaults.baseURL = BASE_API_URL;

但是后来我注意到 s3 作为保存静态文件的服务无法设置环境变量,因此我无法根据process.env.NODE_ENV指定发出请求的 url,而我卡着了。

现在我只是对 url 进行硬编码,所以它可以工作,但是一旦我尝试合并登台和生产环境,git 冲突总是会出现,有什么办法可以使用 amazon s3 存储桶来做到这一点并做出反应?

感谢@jonrsharpe,我能够让它工作,因为我使用的是react,而不是使用NODE_ENV (不能被覆盖),我使用了REACT_APP_ENV ,并在运行构建之前将其设置为环境变量:

REACT_APP_ENV=staging npm run build

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM