簡體   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