dotenv के साथ कॉन्फ़िगरेशन को कोड से बाहर निकालें, डेवलपमेंट को प्रोडक्शन से अलग करें, और अपने सीक्रेट को Git से बाहर रखें।
इस पाठ को Kodokon में खोलेंसुनने वाला पोर्ट, डेटाबेस URL, API कुंजियाँ: इनमें से कोई भी सोर्स कोड में नहीं होनी चाहिए। ये वैल्यू आपकी मशीन और प्रोडक्शन के बीच बदलती हैं, और कुछ सीक्रेट होती हैं। मानक समाधान: एनवायरनमेंट वेरिएबल, जो डेवलपमेंट में एक .env फ़ाइल से लोड होते हैं। npm install dotenv के साथ dotenv इंस्टॉल करें, फिर प्रोजेक्ट की जड़ में फ़ाइल बनाएँ।
PORT=3000
DATABASE_URL=postgres://localhost:5432/kodokon
SESSION_SECRET=change-this-valueअपने प्रवेश बिंदु की एकदम शुरुआत में dotenv/config इम्पोर्ट करें: फ़ाइल के वेरिएबल process.env में कॉपी हो जाते हैं। एक अच्छी पेशेवर आदत: पठन को एक ही कॉन्फ़िगरेशन मॉड्यूल में केंद्रित करें, शुरुआत में वेरिएबल की जाँच करें, और यदि कोई गायब है तो तुरंत विफल हो जाएँ। एक ऐसा सर्वर जो शुरू होने से इनकार कर देता है, उस सर्वर से बेहतर है जो पहली रिक्वेस्ट पर क्रैश हो जाए।
import "dotenv/config";
const required = ["PORT", "SESSION_SECRET"];
for (const name of required) {
if (!process.env[name]) {
throw new Error("Missing variable: " + name);
}
}
export const config = {
port: Number(process.env.PORT),
secret: process.env.SESSION_SECRET,
isProd: process.env.NODE_ENV === "production"
};प्रोडक्शन में, कोई .env फ़ाइल नहीं होती: होस्ट असली वैल्यू प्रदान करता है, और NODE_ENV production होता है। व्यवहार को अनुकूलित करने के लिए config.isProd का उपयोग करें: डेवलपमेंट में विस्तृत लॉग, प्रोडक्शन में संयमित त्रुटि संदेश। साथ ही एक .env.example फ़ाइल कमिट करें जिसमें अपेक्षित वेरिएबल डमी वैल्यू के साथ सूचीबद्ध हों: यह सीक्रेट को उजागर किए बिना कॉन्फ़िगरेशन का दस्तावेज़ीकरण करती है।
import express from "express";
import { config } from "./config.js";
const app = express();
if (!config.isProd) {
console.log("Development mode");
}
app.listen(config.port, () => {
console.log("Port: " + config.port);
});.env फ़ाइल में.env.example फ़ाइल का उद्देश्य क्या है?.gitignore में जोड़ना