繁体   English   中英

环境变量和检测环境 NodeJS/React

[英]Environment Variables and detecting environment NodeJS/React

我研究了dotenv之类的东西并获得了环境变量的概念,我缺少的部分是检测使用哪个变量的位置和时间。 具体来说,我正在处理 Stripe API 密钥,当然,我想在本地开发时使用 Test API 密钥,然后在推送到生产环境时使用 Live API 密钥。

所以很明显我会有一个类似的.env文件;

test_API_KEY=1234
live_API_KEY=5678

但是肯定在我的代码中的某个地方我需要类似的东西

var keyToUse;
if(productionEnvironment){
     keyToUse = process.env.live_API_KEY
}
else if(!productionEnvironment){
     keyToUse = process.env.test_API_KEY
}

还是像 dotenv (或安全的 dot env )一样为您管理? 或者这是用另一种工具/技术完成的?

提前致谢

dotenv建议无论部署环境如何,都使用相同名称的 env 变量。

例如,

.env(本地)

API_KEY=local_api_key

.env(测试中)

API_KEY=test_api_key

基本原则separation of config from code .env文件可能包含在.gitignore中)

以您的方式,如果添加了一些环境(如第 2 阶段),则可能会添加一些相关代码。


如果您想通过将环境部署为代码来获得一组常量值,只需创建config.local.jsconfig.test.js .....

考虑下面的代码)

let constSet;
switch(process.env.DEPLOY_ENV) {
   case 'local':
      constSet = require('./config.local')
      break; 
...
}

好吧,经过一番消化,问题实际上来自对如何使用环境变量的基本误解。 我在想象实时环境变量应该在应用程序中的情况(可能在某处的 JSON 文件中),然后根据应用程序所处的环境使用。

但实际上(或至少在我看来)您需要在环境中设置环境变量 - 而不是代码,因此例如在 AWS 或 Google Cloud 上,这些将覆盖您用于本地的任何内容使用 @getElementsByNature 暗示使用相同的命名约定

这样,当您使用 API_KEY=1234 在本地开发时,它会被 API_KEY=4567 实时覆盖并且没有(如果环境 == 实时),然后执行此操作...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM