想像一下您正處於一個專案的最後階段,一切都準備就緒,然後繁榮起來!由於環境變數遺失或配置錯誤,應用程式崩潰。聽起來很熟悉嗎?如果你去過那裡,你就會知道那種挫折感。但不要害怕,因為 Joi 來拯救世界!
在這篇文章中,我們將探討如何使用 Joi 來驗證環境變數並設定預設值,確保您的應用程式在所有環境中順利運作。
環境變數就像是我們應用程式的無名英雄。它們掌握著敏感資訊、資料庫連接和各種配置設定的密鑰。但能力越大,責任越大:
這些問題可能會導致不眠之夜和瘋狂的調試過程。但如果你可以完全避免它們呢?
Joi 是一個強大的 JavaScript 模式描述和資料驗證函式庫。使用 Joi,您可以為環境變數定義架構,確保它們滿足特定標準並在必要時設定預設值。
1。安裝 Joi 和 dotenv
首先,您需要安裝Joi。開啟終端機並運作:
npm install joi dotenv # dotenv if you are reading env variables from .env file
2。建立設定檔
建立一個名為 config.js 的檔案。我們將在這裡定義架構並驗證環境變數。
const Joi = require('joi'); const dotenv = require('dotenv'); // Load environment variables from .env file dotenv.config(); // Define the schema const envSchema = Joi.object({ NODE_ENV: Joi.string().valid('development', 'production', 'test') .default('development'), PORT: Joi.number().default(3000), DATABASE_URL: Joi.string().uri().required(), API_KEY: Joi.string().required(), // Add more variables as needed }).unknown(); // Allow unknown keys // Validate the environment variables const { error, value: envVars } = envSchema.validate(process.env, { abortEarly: false } ); if (error) { console.error('Config validation error(s):'); error.details.forEach(detail => { console.error(`- ${detail.message}`); }); throw new Error('Environment variables validation failed.'); } // Export the validated and normalized environment variables module.exports = { nodeEnv: envVars.NODE_ENV, port: envVars.PORT, databaseUrl: envVars.DATABASE_URL, apiKey: envVars.API_KEY, // Add more variables as needed };
3。在您的應用程式中使用設定
const config = require('./config'); console.log(`Server is running on port ${config.port}`); // Use config.databaseUrl, config.apiKey, etc.
有錯誤的範例
假設我們有以下 .env 檔:
NODE_ENV=development PORT=not_a_number DATABASE_URL= API_KEY=my_api_key
當我們執行應用程式時,Joi 將驗證這些變數。發生的情況是這樣的:
當 Joi 驗證這些變數時,它會拋出錯誤。
jaimin:~/joi-validate-env$ node index.js Config validation error(s): - "PORT" must be a number - "DATABASE_URL" is not allowed to be empty /home/jaimin/joi-validate-env/config.js:27 throw new Error('Environment variables validation failed.'); ^ Error: Environment variables validation failed. at Object.<anonymous> (/home/jaimin/joi-validate-env/config.js:27:9) at Module._compile (node:internal/modules/cjs/loader:1376:14) at Module._extensions..js (node:internal/modules/cjs/loader:1435:10) at Module.load (node:internal/modules/cjs/loader:1207:32) at Module._load (node:internal/modules/cjs/loader:1023:12) at Module.require (node:internal/modules/cjs/loader:1235:19) at require (node:internal/modules/helpers:176:18) at Object.<anonymous> (/home/jaimin/joi-validate-env/index.js:1:16) at Module._compile (node:internal/modules/cjs/loader:1376:14) at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
這份詳細的錯誤報告有助於快速識別並修復環境配置中的問題。
1。一致性
不再有「在我的機器上運行」的時刻。 Joi 確保設定所有必要的環境變數並在不同環境中具有正確的類型。
2。預設值
為變數設定預設值,降低因缺少設定而導致執行時間錯誤的風險。
3。早期錯誤偵測
在啟動階段儘早捕獲配置錯誤,防止應用程式以無效設定運行。
4。架構文件
充當環境變數的自記錄模式,使新開發人員更容易理解所需的配置。
5。靈活性
允許複雜的驗證邏輯,例如值範圍、特定格式和自訂驗證函數。
使用 Joi 驗證環境變數並設定預設值就像為您的應用程式建立了安全網。它確保您的應用程式在所有環境中順利運行,避免意外崩潰和數小時的調試。
透過採用這種方法,您可以避免與環境變數相關的常見陷阱,並專注於建立為使用者增加價值的功能。因此,繼續吧,將 Joi 整合到您的專案中,然後您就可以安然入睡了,因為您知道您的環境變數都在良好的掌握之中。
編碼愉快!
以上是在 NodeJS 中使用 Joi 驗證環境變量的詳細內容。更多資訊請關注PHP中文網其他相關文章!