我在 Heroku 中设置了几个配置变量:baseURL
、NODE_ENV
和 PROD_MONGODB
。
但是,尝试访问我的应用中的配置变量 baseURL
时,会出现 undefined
。
执行 console.log(process.env);
来查看可用的变量给我这个:
{NODE_ENV:“开发”,PUBLIC_URL:“”}
为什么我为 Heroku 设置的某些变量不显示或无法访问?我是否遗漏了一些明显的东西?
最佳答案
问题是您已经设置了 Heroku 配置变量,这对您的生产来说一切都很好,但您的本地应用程序无权访问这些配置变量。您需要为本地环境变量创建另一个 .env
文件。
- 在项目的根目录中创建一个文件夹并将其命名为
config
- 在 config 文件夹下创建一个文件并将其命名为
dev.env
- 您可以在此处使用
key=value
结构设置环境变量。 - 将
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/