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

f8rj6qna  于 2022-11-24  发布在  Node.js
关注(0)|答案(2)|浏览(132)

我在Heroku中设置了几个配置变量:baseURLNODE_ENVPROD_MONGODB中的一个或多个。
然而,试图访问我的应用程序中的配置变量baseURL,它出现了undefined
执行console.log(process.env);以查看哪些变量可用,得到以下结果:
{NODE_ENV: "development", PUBLIC_URL: ""}
为什么我为Heroku设置的一些变量没有显示或无法访问?我是否遗漏了一些明显的信息?

ar7v8xwq

ar7v8xwq1#

问题是,您已经设置了Heroku配置变量,这对您生产非常有利,但是您的本地应用程序无法访问这些配置变量。您需要为本地环境变量创建另一个.env文件。
1.在项目的根目录下创建一个文件夹,并将其命名为config
1.在config文件夹下创建一个文件并将其命名为dev.env
1.您可以在此处使用key=value结构设置环境变量。
1.将config添加到.gitignore文件
例如,通过在dev.env文件中设置PORT=3000,您可以在本地运行应用程序时访问端口3000,还可以让Heroku将其端口设置为任意值。在您的应用程序中,您只需要使用process.env.YOUR_KEY,在本例中为process.env.PORT
设置环境vars可能是一个巨大的痛苦,因为每个操作系统都有它的方式。你可以使用一个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配置变量的答案。https://stackoverflow.com/a/55233621/7274342

x4shl7ld

x4shl7ld2#

在没有看到任何代码的情况下,假设您正确地设置了配置变量,并且假设您试图通过Web而不是通过本地主机访问它们,我会猜测您试图访问客户端的配置变量。您必须将它们引入服务器端,然后在客户端相应地分发它们。

相关问题