首页 > 解决方案 > heroku 环境变量返回未定义

问题描述

我试图设置一些环境。Heroku 上的变量和我一样,我可以在打开 Heroku 仪表板时看到应用程序中的变量。但是当我尝试从我的应用程序访问变量时,它会返回undefined任何想法吗?

componentDidMount() {
    console.log('this env' , process.env.backEndServer) // undefined
}

检查 Heroku cli:

$ heroku config:get backEndServer // https://myserver.com

标签: javascriptnode.jsreactjsheroku

解决方案


您正在尝试访问客户端的环境变量,这是不可能的。

如果你想在客户端应用程序上使用环境变量,你需要设置 Webpack 来处理不同的环境。

在 Webpack 配置文件中,您将使用Webpack 的 Define plugin为每个环境定义全局变量。

另外不要忘记将NODE_ENV配置变量添加到您的 heroku 应用程序并将其设置为true. So you'll be sure that by accessingprocess.ENV.NODE_ENV will force runtime to usenode.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)
  })
],
...

现在,您可以轻松访问客户端应用程序中的环境变量。


推荐阅读