了解到包含 API 密钥是一种不好的做法,我进行了一些研究并尝试学习如何创建自定义process.env
.
看完之后:
我正在尝试基于process.env.NODE_ENV
. 该应用程序将托管在 Heroku 和我的 .gitignore 上,dev.env
但是当我尝试在dotenv
本地使用时,我得到了一个undefined
. 我已经export NODE_ENV=development
在我的终端中设置了本地环境。当我运行命令npm start
或nodemon
两者都返回undefined
但在env.js中我得到Testing for: development
,例如:
nodemon
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Testing for: development
undefined
这是我所拥有的:
应用程序.js:
const keys = require('./config/env')
return console.log(process.env.PORT)
配置/env.js:
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')
}
配置/dev.env:
## Port number to run Application
PORT=4321
但是在app.js中,当我使用return console.log(process.env.PORT)
或return console.log(keys.PORT)
他们都进行测试时undefined
,为什么?使用时,我似乎在env.jsdotenv
中做错了什么。
为了澄清,我什至还没有推向 Heroku,prod.env将是验证。如果有更好的方法请不吝赐教。