Why are my custom process.env not working within dotenv?
了解到包含API秘密密钥是一种不好的做法,我已经进行了一些研究,并试图学习如何创建自定义
看完之后:
- Node.js随处可见环境变量!
- 如何在OS X中将NODE_ENV设置为生产/开发
- 如何从NodeJS中的文件设置process.env?
- dotenv文件未加载环境变量
我正在尝试基于
1 2 3 4 5 6 7 8 | nodemon [nodemon] 1.19.1 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node app.js` Testing for: development undefined |
这是我所拥有的:
app.js:
1 2 | const keys = require('./config/env') return console.log(process.env.PORT) |
config / env.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | const env = process.env.NODE_ENV console.log(`Testing for: ${env}`) try { switch(env) { case 'undefined': Error('Environment undefined, if local in terminal: export NODE_ENV=development') break case 'development': require('dotenv').config({ path: './dev.env' }) break case 'production': require('dotenv').config({ path: './prod.env' }) break default: Error('Unrecognized Environment') } } catch (err) { Error('Error trying to run file') } |
config / dev.env:
1 2 | ## Port number to run Application PORT=4321 |
但是在app.js中,当我使用
澄清一下,我什至没有推送到Heroku,并且prod.env将成为验证。如果有更好的方法,请教育我。
重新阅读有关
1 | require('dotenv').config({ path: '/full/custom/path/to/your/env/vars' }) |
更改后:
1 2 3 4 5 | case 'development': require('dotenv').config({ path: './dev.env' }) break |
至:
1 2 3 4 5 | case 'development': require('dotenv').config({ path: `${__dirname}/dev.env` }) break |
有用。所以我的错误是范围问题。无需设置
1 | process.env.CUSTOM |
或在这种情况下将是:
1 | process.env.PORT |
来自app.js
Heroku不能在dotenv上运行。
在给定的Heroku应用程序的"设置"页面中,它包含一个名为" Config Vars"的内容:
例如
例如,如果代码要访问:
dotenv的附加值通常用于在本地计算机上进行测试。
您好,请先使用
之所以会出现此错误,是因为您需要设置这些环境变量,因为那里没有.env文件,而在dev服务器上,dotenv使用.env文件为您设置了它。
您需要通过Web界面或heroku CLI设置这些变量。
此heroku文档将为您提供帮助。