了解到包含 API 密钥是一种不好的做法,我做了一些研究并尝试学习如何创建自定义 process.env
。
看完之后:
我正在尝试基于 process.env.NODE_ENV
在本地设置一个 env 文件。该应用程序将托管在 Heroku 上,在我的 .gitignore 中,我有 dev.env
但是当我尝试在本地使用 dotenv
我得到一个 undefined
。我已在终端中使用 export NODE_ENV=development
在本地设置环境。 When I run the command npm start
or nodemon
both return undefined
but in env.js I get Testing for: development
, example:
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
,为什么?使用 dotenv
时,我似乎在 env.js 中做错了什么。
为了澄清,我什至还没有推向 Heroku, prod.env 将是验证。如果有更好的方法请不吝赐教。
原文由 DᴀʀᴛʜVᴀᴅᴇʀ 发布,翻译遵循 CC BY-SA 4.0 许可协议
在重新阅读有关
path
的文档后,我发现了哪里出了问题,例如:更改后:
至:
有用。所以我的错误是范围问题。无需设置
const keys
所以只需使用require('./config/env')
我可以访问任何自定义进程,例如:或者在这种情况下,它将是:
来自 app.js