」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 環境變數:JS 開發的簡短介紹

環境變數:JS 開發的簡短介紹

發佈於2024-10-31
瀏覽:375

Environment Variables: a very short intro for JS development

本文旨在對我自己的環境變數進行簡短的調查,因此風格簡潔

基礎知識

  • 終端是一個真正的終端模擬器的應用程序
  • 我們使用終端與shell互動
  • shell 可以產生進程,例如透過另一個應用程式(如 Node)產生 Javascript 程序
    • 例如。 shell -> 節點 -> index.js
  • 當我們開啟終端機時,會在 shell 中建立一個新的 會話
  • 此會話具有與其關聯的變數(例如 echo $USER 列印目前使用者的名稱)

節點

在node中,環境變數是透過全域process.env存取的

console.log(process.env.USER); // username
  • 應用程式通常透過環境變數存取機密或配置相關數據
    • 例如。 process.env.DB_CONNECTION
    • 這很有幫助,因為我們希望保守秘密,並不是每個使用者都有相同的配置需求-這可以更好地解耦邏輯和配置

載入變數的方法

我們可以透過幾種方法來讓這些變數可供我們的程式使用。

(1) 透過指令行使它們可用:

非常簡單 - 只需在命令列中使用變數呼叫命令。

DB_CONNECTION="postgresql://username:password@host:port/database_name" node index.js

(2) 將它們儲存在 .env 檔案中

.env 檔案由 KEYSVALUES 組成,它們之間以等號分隔。

DB_CONNECTION="postgresql://username:password@host:port/database_name"

這些文件很常見,有幾種方法可以使它們可供您的應用程式使用。

迪倫夫

使用像 direnv 這樣的工具,它從檔案中載入變量,使它們在 shell 中可用;這通常是全域安裝的。

預設情況下 direnv 會尋找 .envrc 文件,但它也可以使用 .env,請參閱此處以進行配置。

多滕夫

使用 dotenv 這樣的工具,它從檔案載入變數並使它們在 process.env 中可用。

direnv 與 dotenv

每種方法都有優點和缺點。

使用 direnv 與語言無關,意味著減少了一種依賴性,但這也意味著如果不使用 direnv,應用程式的使用者需要自己的方式來載入環境變數;

使用 dotenv 確保應用程式的使用者可以無憂無慮地使用 .env 文件,但它確實添加了一個包,只是為了執行 shell 本身可以執行的操作。

節點標誌

Node 最近支援直接使用 .env 檔案(v20.6.0)。

必須使用標誌

node --env-file=.env index.js

與 dotenv 一樣,這使得 .env 的內容在 process.env 中可用。

概括

  • 環境變數是 shell 的原生技術
  • 有幾種不同的方式來加載它們——直接、direnv、dotenv、node
  • direnv 將變數載入到您的 shell 中,但 dotenv 和 node 僅透過 process.env 讓它們可供您的應用程式使用
  • 如果使用節點,您可能應該選擇使用新的 --env-file 標誌
版本聲明 本文轉載於:https://dev.to/charlesloder/environment-variables-a-very-short-intro-for-js-development-18j3?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在時間戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源於遺留實現的關注,這些限制需要對當前的_timestamp功能進行特定的實現。 創建表`foo`( `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-07-04
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-07-04
  • Python元類工作原理及類創建與定制
    Python元類工作原理及類創建與定制
    python中的metaclasses是什麼? Metaclasses負責在Python中創建類對象。就像類創建實例一樣,元類也創建類。他們提供了對類創建過程的控制層,允許自定義類行為和屬性。 在Python中理解類作為對象的概念,類是描述用於創建新實例或對象的藍圖的對象。這意味著類本身是使用...
    程式設計 發佈於2025-07-04
  • Java是否允許多種返回類型:仔細研究通用方法?
    Java是否允許多種返回類型:仔細研究通用方法?
    在Java中的多個返回類型:一種誤解類型:在Java編程中揭示,在Java編程中,Peculiar方法簽名可能會出現,可能會出現,使開發人員陷入困境,使開發人員陷入困境。 getResult(string s); ,其中foo是自定義類。該方法聲明似乎擁有兩種返回類型:列表和E。但這確實是如此嗎...
    程式設計 發佈於2025-07-04
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-07-04
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    程式設計 發佈於2025-07-04
  • FastAPI自定義404頁面創建指南
    FastAPI自定義404頁面創建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    程式設計 發佈於2025-07-04
  • PHP未來:適應與創新
    PHP未來:適應與創新
    PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。 引言在編程世界中,PHP一直是網頁開發的中流砥柱。作為一個從1994年就開始發展...
    程式設計 發佈於2025-07-04
  • 解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    程式設計 發佈於2025-07-04
  • 編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    錯誤:“ usr/bin/ld:找不到-l “ 此錯誤表明鏈接器在鏈接您的可執行文件時無法找到指定的庫。為了解決此問題,我們將深入研究如何指定庫路徑並將鏈接引導到正確位置的詳細信息。 添加庫搜索路徑的一個可能的原因是,此錯誤是您的makefile中缺少庫搜索路徑。要解決它,您可以在鏈接器命令中添...
    程式設計 發佈於2025-07-04
  • 如何使用FormData()處理多個文件上傳?
    如何使用FormData()處理多個文件上傳?
    )處理多個文件輸入時,通常需要處理多個文件上傳時,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    程式設計 發佈於2025-07-04
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-07-04
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-07-04
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-07-04
  • 切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    Unable to Connect to MySQL Database: Troubleshooting Error MessageWhen attempting to switch from the MySQL driver to the MySQLi driver in CodeIgniter,...
    程式設計 發佈於2025-07-04

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3