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

Vite中環境變數的處理

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

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]刪除
最新教學 更多>
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1和$array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建構一...
    程式設計 發佈於2024-11-16
  • 如何解決MySQL中的「1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\」錯誤?
    如何解決MySQL中的「1418 (HY000) This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its statements and binarylogging isenabled\」錯誤?
    匯入MySQL資料庫時,可能會遇到錯誤「1418 (HY000) at line 10185: This function has none of DETERMINISTIC, NO SQL, 或 READS SQL DATA in its statements and二進位日誌記錄已啟用(您可能想...
    程式設計 發佈於2024-11-16
  • 如何在 MySQL 中以特定格式(如“d-m-Y”)顯示日期?
    如何在 MySQL 中以特定格式(如“d-m-Y”)顯示日期?
    MySQL 日期格式和表示方法在MySQL 中建立DATE 欄位時,使用者可能會遇到日期儲存在非使用者中的問題- 友善的格式,如0000-00-00。本文討論了將此格式變更為「d-m-Y」或任何其他首選顯示格式的可能性。 MySQL 的內部日期儲存MySQL 在內部將日期儲存為三-按照特定公式打包的...
    程式設計 發佈於2024-11-16
  • 為什麼我的 PyQt4 按鈕點擊訊號在循環內總是輸出相同的值?
    為什麼我的 PyQt4 按鈕點擊訊號在循環內總是輸出相同的值?
    在循環中連接 PyQt4 中的槽和訊號在 PyQt4 中,在槽和訊號之間建立連接是事件處理的基本面向。但是,當嘗試連接循環內按鈕發出的多個訊號時,可能會出現意外行為。 為了說明此問題,請考慮以下程式碼:def __init__(self): for i in range(0, 10): ...
    程式設計 發佈於2024-11-16
  • 如何在整個 MySQL 資料庫中執行全域查找和替換?
    如何在整個 MySQL 資料庫中執行全域查找和替換?
    尋找並取代整個 MySQL 資料庫目標是在整個 MySQL 資料庫中執行全域尋找和取代操作。這個問題建議更改以下語法:update [table_name] set [field_name] = replace([field_name],'[string_to_find]','[string_to_...
    程式設計 發佈於2024-11-16
  • 如何在 C++ 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南
    如何在 C++ 中將字串轉換為雙精度數:使用 `std::istringstream` 和 `std::stod` 的簡單指南
    在C 中將字串轉換為雙精度型在C 中,可以使用std::istringstream 和std::stod 函數將字串轉換為雙精度型。 #include <sstream> double string_to_double(const std::string& s) { std:...
    程式設計 發佈於2024-11-16
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於2024-11-16
  • 為什麼 Lambda 比 C++ 中的普通函數更可優化?
    為什麼 Lambda 比 C++ 中的普通函數更可優化?
    與普通函數相比,為什麼Lambda 允許增強編譯器優化Nicolai Josuttis 的C 標準庫(第二版)斷言lambda可以與普通函數相比,編譯器可以更有效地最佳化。這項優勢源自於 lambda 作為函數物件的本質。 當 lambda 傳遞給函數模板時,它會被實例化為專門針對該物件定制的新函數...
    程式設計 發佈於2024-11-16
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-16
  • 如何有效地從 JavaScript 中的物件陣列中刪除屬性?
    如何有效地從 JavaScript 中的物件陣列中刪除屬性?
    從物件陣列中有效刪除屬性處理包含多個物件的陣列時,需要從每個物件中刪除特定屬性。雖然使用 for 迴圈的簡單方法就足夠了,但探索利用 ES6 功能和原型操作的替代方法可以帶來更有效率的實作。 ES6 物件解構One這種技術就是 ES6 中引入的物件解構。它可以從物件中提取特定屬性並進一步分配給新變數...
    程式設計 發佈於2024-11-16
  • Nonce 如何保護 Web 要求免受重播攻擊?
    Nonce 如何保護 Web 要求免受重播攻擊?
    如何使用Nonces 保護Web 請求問題用戶找到了利用網站評分系統的請求驗證系統的方法:複製高價值的HTTP 請求。這會損害系統的完整性和可靠性。 解決方案:實現 Nonce 系統Nonce(使用一次的數字)是透過確保特定請求不被執行來防止請求重播攻擊的值。之前做的。這是實現隨機數係統的常見且安全...
    程式設計 發佈於2024-11-16
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-16
  • 如何有效控制JVM記憶體消耗?
    如何有效控制JVM記憶體消耗?
    控制JVM 記憶體消耗為了分配適當的資源以獲得最佳應用程式效能,設定JVM 的最大記憶體至關重要JVM (Java虛擬機器)可以利用。這不僅包括堆內存,還包括正在運行的進程的整個內存消耗。 為了實現這一點,JVM 提供了兩個關鍵的命令列參數:- Xms:: 此參數指定啟動時分配給JVM 的最小記憶體...
    程式設計 發佈於2024-11-16
  • 互動式角鬥士戰鬥模擬|角鬥士之戰.com
    互動式角鬥士戰鬥模擬|角鬥士之戰.com
    透過這個互動式角鬥士戰鬥模擬進入競技場!控制兩個強大的角鬥士,每個角鬥士都有獨特的動作,如攻擊、防禦和閃避,並配有動態動畫和即時戰鬥日誌。這款模擬由 GladiatorsBattle.com 提供支持,非常適合古羅馬和戰術遊戲的粉絲。加入戰鬥,體驗鬥獸場的快感! ...
    程式設計 發佈於2024-11-16
  • 如何正確設定Java URLConnection中的User-Agent?
    如何正確設定Java URLConnection中的User-Agent?
    設定Java URLConnection 的使用者代理程式嘗試使用Java 和URLConnection 解析網頁並將使用者代理設定為指定的值時,可以在末尾附加一個額外的“Java/1.5.0_19”。這是由於舊版 Java 的限制所致。 解決方案(Java 1.6.30 及更高版本)在 Java ...
    程式設計 發佈於2024-11-16

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

Copyright© 2022 湘ICP备2022001581号-3