【问题标题】:Heroku config vars not accessible in node.js?在 node.js 中无法访问 Heroku 配置变量?
【发布时间】:2018-07-12 05:00:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你如何设置它们?它们是否显示在仪表板 -> 设置中?
  • 我已经使用 cmd 中的heroku config:set 完成了它,是的,它们确实出现在仪表板 -> 设置中。如果我从 cmd 执行 heroku config,它们也会出现。

标签: javascript node.js heroku


【解决方案1】:

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

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

例如,通过在 dev.env 文件中设置 PORT=3000,您可以在本地运行应用程序时访问端口 3000,并且还可以让 Heroku 将其端口设置为任何它喜欢的端口。在您的应用中,您只需要使用process.env.YOUR_KEY,在本例中为process.env.PORT

设置环境变量可能是一个巨大的痛苦,因为每个操作系统都在运行。你可以使用一个 npm 节点模块env-cmd 来解决这个问题。 首先,通过以下方式将其安装为开发依赖项:

npm i env-cmd --save-dev

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

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

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

如果需要,您可以查看 Heroku config vars 的这个答案。 https://stackoverflow.com/a/55233621/7274342

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 2023-04-05
    • 1970-01-01
    • 2020-06-03
    • 2019-08-23
    • 2022-08-02
    • 2019-11-03
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多