【发布时间】:2017-12-17 07:18:22
【问题描述】:
我最近向 Heroku 部署了一个 React/Express 应用程序,但我遇到了作为已构建应用程序和 Heroku 部署管道一部分的环境变量的问题 - 简而言之,环境变量的值来自升级到production 时,应用程序的staging 版本被延续——我可以正确设置环境变量的唯一方法是将应用程序直接推送到production,这确实违背了部署管道的目的第一名。以下是该场景的摘要:
有问题的环境变量是API_URL,在webpack.config.js中引用如下:
plugins: [
new webpack.DefinePlugin({
'API_URL': JSON.stringify(process.env.API_URL || 'http://localhost:4000/api/v1')
})
]
API 本身是另一个 Heroku 应用程序,具有 staging 和 production 版本,因此 API_URL 环境变量的值在我的 React 应用程序 Heroku 配置中分别设置为 https://staging-api-12345.herokuapp.com/api/v1 和 https://production-api-12345.herokuapp.com/api/v1。
当我将我的 React 应用程序推送到 staging 时,它运行良好 - 但是,当我将应用程序提升到 production 并首次调用 API 时,它仍然指向 https://staging-api-12345.herokuapp.com/api/v1。好的,我明白为什么会这样 - 应用程序是在被推送到 staging 时构建的...所以我在升级到 production 后尝试重建应用程序,但这不起作用,它仍然使用 @987654337 @ 环境变量。
在使用 Heroku 部署管道时,有没有办法强制应用 slug 重新构建,以便捕获不同的环境变量?
【问题讨论】:
标签: heroku webpack heroku-pipelines