Environment Config
Secrets aur environment-specific values (DB URL, API keys, port) code mein HARDCODE nahi hone chahiye. dotenv .env file se values process.env mein load karta hai, aur .env HAMESHA .gitignore mein hona chahiye.
NODE_ENV=production Express ka behaviour badal deta hai — view caching on ho jaati hai aur error responses se stack traces hat jaate hain. Ye set karna performance aur security dono ke liye zaroori hai.
require("dotenv").config(); // sabse upar, kisi bhi import se pehle
const PORT = process.env.PORT || 3000;
const isProd = process.env.NODE_ENV === "production";
// .env (gitignore mein hona chahiye)
// DATABASE_URL=postgres://...
// JWT_SECRET=super-secret-value- Secrets .env mein, aur .env kabhi git mein commit mat karo
- dotenv.config() sabse pehle call karo taaki baaki modules ko values mil jayein
- NODE_ENV=production caching on aur stack traces off karta hai
process.env ko poore codebase mein bikhaerne ke bajaye ek config module banao jo startup par sab values padhe, validate kare aur typed/default values export kare. Missing config par app ko FAIL FAST karna chahiye — chalte-chalte fail hone se behtar hai.
// config.js
require("dotenv").config();
const required = ["DATABASE_URL", "JWT_SECRET"];
for (const k of required)
if (!process.env[k]) throw new Error(`Missing env: ${k}`);
module.exports = {
port: Number(process.env.PORT) || 3000,
isProd: process.env.NODE_ENV === "production",
dbUrl: process.env.DATABASE_URL,
};NODE_ENV=production Express mein view template caching on karta hai, error responses se stack trace hataata hai, aur kai libraries apne dev-only checks band kar deti hain. Production mein ye set na hona ek silent performance aur security issue hai.