javascript - heroku 环境变量返回未定义
问题描述
我试图设置一些环境。Heroku 上的变量和我一样,我可以在打开 Heroku 仪表板时看到应用程序中的变量。但是当我尝试从我的应用程序访问变量时,它会返回undefined
任何想法吗?
componentDidMount() {
console.log('this env' , process.env.backEndServer) // undefined
}
检查 Heroku cli:
$ heroku config:get backEndServer // https://myserver.com
解决方案
您正在尝试访问客户端的环境变量,这是不可能的。
如果你想在客户端应用程序上使用环境变量,你需要设置 Webpack 来处理不同的环境。
在 Webpack 配置文件中,您将使用Webpack 的 Define plugin为每个环境定义全局变量。
另外不要忘记将NODE_ENV
配置变量添加到您的 heroku 应用程序并将其设置为true. So you'll be sure that by accessing
process.ENV.NODE_ENV will force runtime to use
node.js` 环境。
现在您可以配置您的生产环境,如下所示:
/* in webpack.config-prod.js */
...,
plugins: [
new webpack.DefinePlugin({
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
API_HOST: JSON.stringify(process.env.API_HOST)
})
],
...
现在,您可以轻松访问客户端应用程序中的环境变量。
推荐阅读
- android - TabLayout - 如何仅在选项卡上加载片段
- python - ValueError:未知标签类型:交叉验证中的“未知”
- nservicebus - NserviceBus:如何为请求/回复消息设置超时
- flutter - 错误状态:Stream 已经被 Flutter 提供者监听
- azure - 跨订阅移动 Azure ExpressRoute 线路
- assembly - 在自定义机器上运行 GCC 编译代码。在程序集中找不到 sp 初始化
- powershell - 安全访问 Key Vault 机密
- python - 当我在类中按下 Python Tkinter 中的按钮时如何删除条目
- html - 如何在 html 和 css 中使背景颜色(光泽)发光
- angular - 如何关闭对话框Angular 9 ngx admin