几天前我开始学习 Node.js,我面临着一个关于数据库和Gmail连接凭据的问题(最后一个是 需要的nodemailer)。
我基本上创建了一个这样的文件:
const config = {
development: {
url: '127.0.0.1',
database: {
host: 'mongodb://localhost',
port: '27017',
db: 'foo'
},
gmail: {
username: 'foo@gmail.com',
password: 'foo',
},
server: {
host: '127.0.0.1',
port: '3000'
}
},
production:{
url: 'https://my.site.com',
database: {
host: '127.0.0.1',
port: '27017',
db: 'foo'
},
gmail: {
username: 'foo@gmail.com',
password: 'foo',
},
server: {
host: '127.0.0.1',
port: '3000'
}
}
};
module.exports = config;
Run Code Online (Sandbox Code Playgroud)
我不喜欢在应用程序中输入这些信息,所以经过一些研究,我找到了这个库:dotenv。该库将信息存储在process.env属性内,但实质是相同的......为什么我应该更喜欢像dotenv针对我的config模块的解决方案?
你有什么建议?
我绝对推荐dotenv,这就是它创建的目的。但是,我特别建议使用dotenv-safe npm 包。与dotenv相比,它提供了升级的功能。
\n由于您不会将.env.xy包含所有敏感数据的文件推送到版本管理(例如 Git),因此您很快就会对应该将哪些变量放入环境文件中感到困惑,尤其是在团队中工作时。
让\xe2\x80\x99s 说 Adam 创建一个新的环境变量,在他的代码中使用它并推送他的代码。由于环境文件位于文件.gitignore中,因此当您的代码尝试使用该变量并中断时,您只会注意到 Adam 引入了一个新的环境变量。然而,使用dotenv-safe.env.example ,您可以使用有效密钥(但使用虚拟值)将文件推送到 Git,例如,将文件MY_API_KEY=somerandomgibberish推送到 Git,而真正的值将在文件MY_API_KEY=aaf347xkhskallmtopsecret中.env.production。
如果您的真实.env文件(在本例中).env.production与.env.example您刚刚从 Git 中提取的文件相比有任何不匹配的密钥,则 Dotenv-safe 不允许运行您的应用程序。这样,您就会发现 Adam 在启动您的应用程序时添加了他的新环境变量。
这样,一旦您的应用程序拥有了在 中预定义的所有变量,就不会出现意外的行为,.env.example从长远来看,可以保护您免受许多麻烦和数千次不必要的重新部署。:)
| 归档时间: |
|
| 查看次数: |
10338 次 |
| 最近记录: |