reactjs - Heroku:促进具有不同环境变量的静态反应页面
问题描述
我们使用 Heroku 管道部署了静态反应站点。
代码在 Stage 上自动推送和构建。为了推送到生产环境,我们想使用 Heroku 提升功能,所以我们确信我们使用的是我们在舞台上测试过的相同构建。
Stage 和 Production 有不同的 API,我们想通过 Heroku 的环境变量进行配置。
在npm run build
舞台const apiUrl = process.env.API_URL
上被替换为const apiUrl = "https://stage-api.example.com"
不幸的是(但当然),在升级到生产之后,apiUrl
它仍然是 Stage 中的那个。
此外,发布阶段的 hack不起作用,因为不会部署发布阶段的文件系统更改。
有没有办法将 Heroku 的提升功能与静态构建和环境变量一起使用(我知道我们可以在每个阶段进行重建或加载基于域的配置)?
使用 Heroku 管道部署静态站点有什么好的做法吗?
解决方案
您需要在const apiUrl = process.env.API_URL
运行时运行,而不是在构建时注入。我在heroku中使用promote函数并让应用程序获取该变量,如果process.env.NODE_ENV === 'production'
推荐阅读
- web-services - 启动wildfly时出现org.jboss.weld.exceptions.DefinitionException
- kakoune - Kakoune:如何在 goto 模式下映射“向前跳跃”和“向后跳跃”(例如,将“gp”映射到
) - node.js - Cheerio 在使用“包含”选择器时返回未定义
- node.js - Websockets 与针对用户特定细节的长轮询
- css - CSS – 边框底部的过渡不起作用
- r - 使用 glmmPQL (MASS) 和 stargazer/texreg/pander 制作漂亮的表格
- javascript - CSS rotateY 更新 img src 在转换完成之前不可见
- python - Django-如何“合并”两个序列化程序
- php - imagick 安装错误权限被拒绝
- foreach - xdocument 从头开始创建