」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Vite中環境變數的處理

Vite中環境變數的處理

發佈於2024-11-16
瀏覽:479

Handling Environment Variables in Vite

在現代 Web 開發中,管理敏感資料(例如 API 金鑰、資料庫憑證以及不同環境的各種配置)至關重要。將這些變數直接儲存在程式碼中可能會帶來安全風險並使部署變得複雜。 Vite,一個現代的前端建構工具,提供了一種透過.env檔案管理環境變數的簡單方法。

什麼是 .env 檔?

.env 檔案是一個簡單的設定文件,用於定義特定於環境的變數。這些變數可以在您的應用程式中訪問,同時與原始程式碼保持分離。這種做法可以輕鬆管理不同的環境(開發、暫存和生產),而無需對敏感資料進行硬編碼。

Vite中的環境變數:

Vite內建了對環境變數的支持,可以更輕鬆地根據當前環境注入不同的值。 Vite處理環境變數的方式如下:

全域變數: Vite 在建置時注入環境變數。
前綴變數:出於安全原因,只有以 VITE_ 為前綴的變數才會暴露給客戶端 JavaScript 程式碼。任何不以這種方式添加前綴的變數都無法在瀏覽器中存取。

Vite環境變數範例:

VITE_API_URL=https://api.example.com

在Vite中設定.env檔
Vite支援多個.env文件,允許您為特定環境定義環境變數。這是一個典型的設定:

.env:在所有環境中共享的環境變數的預設檔。
.env.development:特定於開發環境的變數。
.env.production:特定於生產環境的變數。

範例 .env 檔案:

VITE_API_URL=https://api.example.com
VITE_APP_NAME=MyViteApp

.env.development 文件範例:

VITE_API_URL=http://localhost:3000
VITE_DEBUG_MODE=true

.env.生產文件範例:

VITE_API_URL=https://api.production.com
VITE_DEBUG_MODE=false

存取Vite環境變數

要存取Vite專案內的環境變量,請使用import.meta.env物件。

console.log(import.meta.env.VITE_API_URL); // Outputs the value of VITE_API_URL

Vite在建置過程中會根據目前環境自動取代import.meta.env值。

管理多個環境

Vite 的 .env 檔案可以針對開發、登台和生產等不同環境進行客製化。根據您所處的環境,Vite 會載入對應的 .env 檔案:

運行 vite 載入 .env.development 檔案。
執行 vite build 會載入 .env.Production 檔案。
在特定環境下運作:

vite --mode staging

調試環境變數:

如果您遇到環境變數未如預期運作的問題,請檢查以下內容:

  • 變數前綴:確保所有客戶端變數都有VITE_前綴,因為Vite會忽略沒有此前綴的變數。
  • Env 載入順序:確保 .env 和環境特定檔案位於專案根目錄中且命名正確。
  • 檢查建置流程:使用console.log(import.meta.env)查看開發過程中所有可用的環境變數。

結論:

Vite 透過 .env 檔案內建對環境變數的支持,可以輕鬆管理跨不同環境的配置。

版本聲明 本文轉載於:https://dev.to/padmajothi_athimoolam_23d/handling-environment-variables-in-vite-480b?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,以便更快地搜索這些前綴。 理解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-07-03
  • 查找當前執行JavaScript的腳本元素方法
    查找當前執行JavaScript的腳本元素方法
    如何引用當前執行腳本的腳本元素在某些方案中理解問題在某些方案中,開發人員可能需要將其他腳本動態加載其他腳本。但是,如果Head Element尚未完全渲染,則使用document.getElementsbytagname('head')[0] .appendChild(v)的常規方...
    程式設計 發佈於2025-07-03
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-07-03
  • 如何實時捕獲和流媒體以進行聊天機器人命令執行?
    如何實時捕獲和流媒體以進行聊天機器人命令執行?
    在開發能夠執行命令的chatbots的領域中,實時從命令執行實時捕獲Stdout,一個常見的需求是能夠檢索和顯示標準輸出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    程式設計 發佈於2025-07-03
  • 如何在Java的全屏獨家模式下處理用戶輸入?
    如何在Java的全屏獨家模式下處理用戶輸入?
    Handling User Input in Full Screen Exclusive Mode in JavaIntroductionWhen running a Java application in full screen exclusive mode, the usual event ha...
    程式設計 發佈於2025-07-03
  • 在PHP中如何高效檢測空數組?
    在PHP中如何高效檢測空數組?
    在PHP 中檢查一個空數組可以通過各種方法在PHP中確定一個空數組。如果需要驗證任何數組元素的存在,則PHP的鬆散鍵入允許對數組本身進行直接評估:一種更嚴格的方法涉及使用count()函數: if(count(count($ playerList)=== 0){ //列表為空。 } 對...
    程式設計 發佈於2025-07-03
  • 切換到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-03
  • 如何在無序集合中為元組實現通用哈希功能?
    如何在無序集合中為元組實現通用哈希功能?
    在未訂購的集合中的元素要糾正此問題,一種方法是手動為特定元組類型定義哈希函數,例如: template template template 。 struct std :: hash { size_t operator()(std :: tuple const&tuple)const {...
    程式設計 發佈於2025-07-03
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-07-03
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-07-03
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    程式設計 發佈於2025-07-02
  • JavaScript計算兩個日期之間天數的方法
    JavaScript計算兩個日期之間天數的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    程式設計 發佈於2025-07-02
  • eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    稱量()和ast.literal_eval()中的Python Security 在使用用戶輸入時,必須優先確保安全性。強大的Python功能Eval()通常是作為潛在解決方案而出現的,但擔心其潛在風險。 This article delves into the differences betwee...
    程式設計 發佈於2025-07-02
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,將常數列添加到Spark DataFrame,該列具有適用於所有行的任意值的Spark DataFrame,可以通過多種方式實現。使用文字值(SPARK 1.3)在嘗試提供直接值時,用於此問題時,旨在為此目的的column方法可能會導致錯誤。 df.withCo...
    程式設計 發佈於2025-07-02
  • PHP與C++函數重載處理的區別
    PHP與C++函數重載處理的區別
    作為經驗豐富的C開發人員脫離謎題,您可能會遇到功能超載的概念。這個概念雖然在C中普遍,但在PHP中構成了獨特的挑戰。讓我們深入研究PHP功能過載的複雜性,並探索其提供的可能性。 在PHP中理解php的方法在PHP中,函數超載的概念(如C等語言)不存在。函數簽名僅由其名稱定義,而與他們的參數列表無關...
    程式設計 發佈於2025-07-02

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

Copyright© 2022 湘ICP备2022001581号-3