繁体   English   中英

heroku 环境变量返回未定义

[英]heroku environment variables return undefined

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

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

检查 Heroku cli:

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

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

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

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

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

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

如果您查看 Heroku 构建日志,它建议您指定 nodejs 版本。 如果您在 package.json 中指定节点版本,它可能会解决问题。

包.json

{
...
  "engines": {
   "node": "12.13.1"
   },
...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM