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

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

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

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]刪除
最新教學 更多>
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    刪除匿名事件偵聽器將匿名事件偵聽器添加到元素中會提供靈活性和簡單性,但是當要刪除它們時,可以構成挑戰,而無需替換元素本身就可以替換一個問題。 element? element.addeventlistener(event,function(){/在這里工作/},false); 要解決此問題,請考...
    程式設計 發佈於2025-05-17
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    postgresql:為每個唯一標識符在postgresql中提取最後一行,您可能需要遇到與數據集合中每個不同標識的信息相關的信息。考慮以下數據:[ 1 2014-02-01 kjkj 在數據集中的每個唯一ID中檢索最後一行的信息,您可以在操作員上使用Postgres的有效效率: id dat...
    程式設計 發佈於2025-05-17
  • 切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    切換到MySQLi後CodeIgniter連接MySQL數據庫失敗原因
    無法連接到mySQL數據庫:故障排除錯誤消息要調試問題,建議將以下代碼添加到文件的末尾.//config/database.php並查看輸出: ... ... 迴聲'... echo '<pre>'; print_r($db['default']); echo '</pr...
    程式設計 發佈於2025-05-17
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-05-17
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] 剩餘_size- = buf_size lines = buffer.split('\ n'....
    程式設計 發佈於2025-05-17
  • 如何將多種用戶類型(學生,老師和管理員)重定向到Firebase應用中的各自活動?
    如何將多種用戶類型(學生,老師和管理員)重定向到Firebase應用中的各自活動?
    Red: How to Redirect Multiple User Types to Respective ActivitiesUnderstanding the ProblemIn a Firebase-based voting app with three distinct user type...
    程式設計 發佈於2025-05-17
  • `console.log`顯示修改後對象值異常的原因
    `console.log`顯示修改後對象值異常的原因
    foo = [{id:1},{id:2},{id:3},{id:4},{id:id:5},],]; console.log('foo1',foo,foo.length); foo.splice(2,1); console.log('foo2', foo, foo....
    程式設計 發佈於2025-05-17
  • 在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在細胞編輯後,如何維護自定義的JTable細胞渲染?
    在JTable中維護jtable單元格渲染後,在JTable中,在JTable中實現自定義單元格渲染和編輯功能可以增強用戶體驗。但是,至關重要的是要確保即使在編輯操作後也保留所需的格式。 在設置用於格式化“價格”列的“價格”列,用戶遇到的數字格式丟失的“價格”列的“價格”之後,問題在設置自定義單元...
    程式設計 發佈於2025-05-17
  • Go web應用何時關閉數據庫連接?
    Go web應用何時關閉數據庫連接?
    在GO Web Applications中管理數據庫連接很少,考慮以下簡化的web應用程序代碼:出現的問題:何時應在DB連接上調用Close()方法? ,該特定方案將自動關閉程序時,該程序將在EXITS EXITS EXITS出現時自動關閉。但是,其他考慮因素可能保證手動處理。 選項1:隱式關閉終...
    程式設計 發佈於2025-05-17
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-05-17
  • 如何在Chrome中居中選擇框文本?
    如何在Chrome中居中選擇框文本?
    選擇框的文本對齊:局部chrome-inly-ly-ly-lyly solument 您可能希望將文本中心集中在選擇框中,以獲取優化的原因或提高可訪問性。但是,在CSS中的選擇元素中手動添加一個文本 - 對屬性可能無法正常工作。 初始嘗試 state)</option> < o...
    程式設計 發佈於2025-05-17
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-05-17
  • 在Python中如何創建動態變量?
    在Python中如何創建動態變量?
    在Python 中,動態創建變量的功能可以是一種強大的工具,尤其是在使用複雜的數據結構或算法時,Dynamic Variable Creation的動態變量創建。 Python提供了幾種創造性的方法來實現這一目標。 利用dictionaries 一種有效的方法是利用字典。字典允許您動態創建密鑰並...
    程式設計 發佈於2025-05-17
  • 為什麼HTML無法打印頁碼及解決方案
    為什麼HTML無法打印頁碼及解決方案
    無法在html頁面上打印頁碼? @page規則在@Media內部和外部都無濟於事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: ...
    程式設計 發佈於2025-05-17
  • 為什麼使用Firefox後退按鈕時JavaScript執行停止?
    為什麼使用Firefox後退按鈕時JavaScript執行停止?
    導航歷史記錄問題:JavaScript使用Firefox Back Back 此行為是由瀏覽器緩存JavaScript資源引起的。要解決此問題並確保在後續頁面訪問中執行腳本,Firefox用戶應設置一個空功能。 警報'); }; alert('inline Alert')...
    程式設計 發佈於2025-05-17

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

Copyright© 2022 湘ICP备2022001581号-3