我在Heroku中设置了几个配置变量:baseURL
,NODE_ENV
和PROD_MONGODB
。
但是,尝试访问我的应用中的配置变量baseURL
,它出现undefined
。
执行console.log(process.env);
查看可用的vars给我这个:
{NODE_ENV: "development", PUBLIC_URL: ""}
为什么我为Heroku设置的某些变量不显示或无法访问?我错过了一些明显的东西吗?
答案 0 :(得分:0)
问题是您已经设置了Heroku配置变量,这对您的生产来说都很好,但是您的本地应用程序无权访问这些配置变量。您需要为本地环境变量创建另一个.env
文件。
config
dev.env
key=value
结构来设置环境变量。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