Bayangkan anda berada di peringkat akhir projek, segala-galanya bersedia untuk disiarkan secara langsung, dan meledak! Apl ranap kerana pembolehubah persekitaran tiada atau salah konfigurasi. Bunyi biasa? Jika anda pernah ke sana, anda tahu kekecewaannya. Tetapi jangan takut, kerana Joi ada di sini untuk menyelamatkan hari ini!
Dalam catatan blog ini, kami akan meneroka cara kami boleh menggunakan Joi untuk mengesahkan pembolehubah persekitaran dan menetapkan nilai lalai, memastikan aplikasi anda berjalan lancar merentas semua persekitaran.
Pembolehubah persekitaran adalah seperti wira aplikasi kami yang tidak didendang. Mereka memegang kunci kepada maklumat sensitif, sambungan pangkalan data, dan pelbagai tetapan konfigurasi. Tetapi dengan kuasa yang besar datang tanggungjawab yang besar:
Isu ini boleh menyebabkan tidur malam dan sesi penyahpepijatan yang membosankan. Tetapi bagaimana jika anda boleh mengelakkannya sama sekali?
Joi ialah perihalan skema yang berkuasa dan perpustakaan pengesahan data untuk JavaScript. Dengan Joi, anda boleh mentakrifkan skema untuk pembolehubah persekitaran anda, memastikan ia memenuhi kriteria tertentu dan menetapkan nilai lalai jika perlu.
1. Pasang Joi & dotenv
Pertama, anda perlu memasang Joi. Buka terminal anda dan jalankan:
npm install joi dotenv # dotenv if you are reading env variables from .env file
2. Cipta Fail Konfigurasi
Buat fail bernama config.js. Di sinilah kami akan mentakrifkan skema kami dan mengesahkan pembolehubah persekitaran.
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. Gunakan Konfigurasi dalam Aplikasi Anda
const config = require('./config'); console.log(`Server is running on port ${config.port}`); // Use config.databaseUrl, config.apiKey, etc.
Contoh dengan Ralat
Katakan kita mempunyai fail .env berikut:
NODE_ENV=development PORT=not_a_number DATABASE_URL= API_KEY=my_api_key
Apabila kami menjalankan aplikasi kami, Joi akan mengesahkan pembolehubah ini. Inilah yang berlaku:
Apabila Joi mengesahkan pembolehubah ini, ia akan membuang ralat.
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)
Laporan ralat terperinci ini membantu mengenal pasti dan membetulkan isu dalam konfigurasi persekitaran dengan cepat.
1. Konsisten
Tiada lagi detik "berfungsi pada mesin saya". Joi memastikan semua pembolehubah persekitaran yang diperlukan ditetapkan dan mempunyai jenis yang betul merentas persekitaran yang berbeza.
2. Nilai Lalai
Tetapkan nilai lalai untuk pembolehubah, mengurangkan risiko ralat masa jalan akibat tetapan yang tiada.
3. Pengesanan Ralat Awal
Tangkap ralat konfigurasi pada awal fasa permulaan, menghalang aplikasi daripada berjalan dengan tetapan yang tidak sah.
4. Dokumentasi Skema
Bertindak sebagai skema pendokumentasian sendiri untuk pembolehubah persekitaran, menjadikannya lebih mudah untuk pembangun baharu memahami konfigurasi yang diperlukan.
5. Fleksibiliti
Membenarkan logik pengesahan yang kompleks, seperti julat nilai, format khusus dan fungsi pengesahan tersuai.
Menggunakan Joi untuk mengesahkan pembolehubah persekitaran dan menetapkan nilai lalai adalah seperti mempunyai jaring keselamatan untuk aplikasi anda. Ia memastikan apl anda berjalan lancar merentas semua persekitaran, mengelakkan anda daripada ranap yang tidak dijangka dan berjam-jam penyahpepijatan.
Dengan menggunakan pendekatan ini, anda boleh mengelakkan perangkap biasa yang berkaitan dengan pembolehubah persekitaran dan menumpukan pada membina ciri yang menambah nilai kepada pengguna anda. Jadi teruskan, integrasikan Joi ke dalam projek anda dan tidur dengan nyenyak mengetahui pembolehubah persekitaran anda berada di tangan yang baik.
Selamat mengekod!
Atas ialah kandungan terperinci Mengesahkan Pembolehubah Persekitaran dengan Joi dalam NodeJS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!