在node.js中无法访问Heroku配置变量?

时间:2018-02-01 19:05:28

标签: javascript node.js heroku

我在Heroku中设置了几个配置变量:baseURLNODE_ENVPROD_MONGODB

但是,尝试访问我的应用中的配置变量baseURL,它出现undefined

执行console.log(process.env);查看可用的vars给我这个:

{NODE_ENV: "development", PUBLIC_URL: ""}

为什么我为Heroku设置的某些变量不显示或无法访问?我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

问题是您已经设置了Heroku配置变量,这对您的生产来说都很好,但是您的本地应用程序无权访问这些配置变量。您需要为本地环境变量创建另一个.env文件。

  1. 在项目的根目录下,创建一个文件夹,并将其命名为config
  2. 在config文件夹下创建一个文件并将其命名为dev.env
  3. 您可以在此处使用key=value结构来设置环境变量。
  4. config添加到您的.gitignore文件中

例如,通过在PORT=3000文件中设置dev.env,您可以在本地运行应用程序时访问端口3000,也可以将Heroku的端口设置为任意端口。在您的应用程序内,您只需要使用process.env.YOUR_KEY(在本示例中为process.env.PORT)即可。

设置环境var可能会非常痛苦,因为每个操作系统都在使用它。您可以使用npm节点模块env-cmd来解决此问题。 首先,通过以下方式将其安装为开发依赖项:

npm i env-cmd --save-dev

现在打开您的package.json文件和打击脚本,以在开发中使用它:

"scripts": {
    "start": "node src/app.js",
    "dev": "env-cmd ./config/dev.env nodemon src/index.js"
  }

我假设您使用的是nodemon,并且您的src目录中有一个index.js文件。

如果需要,您可以查看一下有关Heroku配置变量的答案。 https://stackoverflow.com/a/55233621/7274342