Rumah > hujung hadapan web > tutorial js > Mengesahkan Pembolehubah Persekitaran dengan Joi dalam NodeJS

Mengesahkan Pembolehubah Persekitaran dengan Joi dalam NodeJS

WBOY
Lepaskan: 2024-07-26 11:46:30
asal
508 orang telah melayarinya

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!

Image description

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.

Masalahnya

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:

  • Pembolehubah Tiada: "Mengapa apl saya tidak bersambung ke pangkalan data?" Op, terlupa untuk menetapkan DATABASE_URL.
  • Jenis Data Salah: "Mengapa pelayan saya mendengar pada port 'tiga ribu'?" Taip dalam pembolehubah PORT.
  • Konfigurasi Tidak Konsisten: Pembangunan berfungsi dengan baik, tetapi pengeluaran adalah mimpi ngeri.
  • Kekurangan Lalai: Apl gagal jika pembolehubah tertentu tidak ditetapkan.

Isu ini boleh menyebabkan tidur malam dan sesi penyahpepijatan yang membosankan. Tetapi bagaimana jika anda boleh mengelakkannya sama sekali?

Masukkan Joi

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.

Langkah-langkah untuk Mengesahkan dan Menetapkan Lalai dengan Joi

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
Salin selepas log masuk

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
};
Salin selepas log masuk

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.
Salin selepas log masuk

Contoh dengan Ralat
Katakan kita mempunyai fail .env berikut:

NODE_ENV=development
PORT=not_a_number
DATABASE_URL=
API_KEY=my_api_key
Salin selepas log masuk

Apabila kami menjalankan aplikasi kami, Joi akan mengesahkan pembolehubah ini. Inilah yang berlaku:

  1. PORT ditetapkan kepada not_a_number, yang bukan nombor yang sah.
  2. URL_DATABASE kosong, yang tidak sah kerana ia adalah medan yang diperlukan.

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)
Salin selepas log masuk

Laporan ralat terperinci ini membantu mengenal pasti dan membetulkan isu dalam konfigurasi persekitaran dengan cepat.

Kenapa Guna Joi?

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.

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan