javascript - Heroku 配置变量在 Node.js 中无法访问?

标签 javascript node.js heroku

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

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

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

{NODE_ENV:“开发”,PUBLIC_URL:“”}

为什么我为 Heroku 设置的某些变量不显示或无法访问?我是否遗漏了一些明显的东西?

最佳答案

问题是您已经设置了 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 Node 模块 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

关于javascript - Heroku 配置变量在 Node.js 中无法访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570038/

相关文章:

Javascript 不再是一种脚本语言?

Node.js 未处理的 "error"事件

python - Django 与 Heroku : Getting started

javascript - 为什么这个 JavaScript 正则表达式会在浏览器中崩溃?

javascript - 不使用 native 函数从数组末尾移动零

javascript - AngularJS ui 路由器 - 不显示嵌套的部分 View

node.js - Nodejs,性能 Hook 在调用 performance.getEntriesByType 时崩溃

javascript - for 循环内的递归函数未按预期工作

django - 在Heroku上安装和部署Django应用

python - 如何从 Heroku 上运行的 Web 应用程序获取用户位置?