あなたがプロジェクトの最終段階にいて、すべての準備が整っており、順調に稼働していると想像してください。環境変数が見つからないか構成が間違っているため、アプリがクラッシュします。おなじみですね?そこに行ったことがある人なら、そのイライラを知っているでしょう。でも心配しないでください。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 中国語 Web サイトの他の関連記事を参照してください。