【发布时间】:2018-12-04 02:12:52
【问题描述】:
免责声明:我是 React 菜鸟,所以也许我想要做的不是 React 方式
我正在编写一个 React 前端,它将被部署以由某些云提供商静态提供服务,例如S3 或谷歌存储或其他任何东西。此前端与位于云中某处的多个 API 服务器交互,可能在同一个提供商中,也可能不在。此外,在开发 UI 或其一部分时,这些服务器的地址可能是本地或测试实例。
如何灵活地将 API 服务器 URL 注入到我的 react 应用程序中,以便我可以使用不同的地址在 dev、staging 或 prod 中进行部署?
解决方案:我最终使用了建议的解决方案组合:
- 使用
.env.production和.env.development文件(确切名称)来存储变量REACT_APP_API_URI = 'host' - 这是由 create-react-app 的构建脚手架自动获取的,并在 UI 代码中作为
process.env.REACT_APP_API_URI提供
请注意,这有点违背 12 Factor Apps 的原则,例如在版本控制中将环境变量存储在文件中,但它可以完成 ATM 的工作。
【问题讨论】:
-
我通常将
.env.sample添加到 repo 而不是带有值的实际文件。此外,您还可以在 CI/CD 中设置该环境变量,以更好地与 12 Factor 方法保持一致。 -
不错的解决方案。将
.env.production和.env.development文件添加到根目录后,您可以使用console.log(process.env.NODE_ENV)和console.log(process.env.REACT_APP_API_URI)从任何地方观看。 -
重要提示:使用
create-react-app,您需要在变量名前加上REACT_APP_前缀才能访问它。