// Must load BEFORE other imports that read process.envimport "dotenv/config";import express from "express";// Or with optionsimport dotenv from "dotenv";dotenv.config({ path: ".env.production", override: false });
Option
Default
Purpose
path
.env
Custom file path or array
encoding
utf8
File encoding
override
false
Overwrite existing env vars
processEnv
process.env
Target object
3. Accessing Variables
Pattern
Result
process.env.PORT
Returns string or undefined
+process.env.PORT
Coerce to number (NaN if invalid)
process.env.DEBUG === "true"
Manual boolean check
JSON.parse(process.env.CONFIG)
Parse JSON env value
4. Creating .env File
Example: .env
NODE_ENV=developmentPORT=3000DATABASE_URL=postgres://user:pass@localhost:5432/appJWT_SECRET="multi word secret"ALLOWED_ORIGINS=https://app.example.com,https://admin.example.com# Comments allowedLOG_LEVEL=info
# package.json scripts (cross-env for Windows compatibility)"start": "cross-env NODE_ENV=production node app.js"# Or natively in shellNODE_ENV=production node app.js# PM2pm2 start app.js --env production