Intermediate Node.js Interview QuestionsIntermediatePractical
Node.js · Question 48
How does dotenv work for Node.js configuration?
Direct answer
dotenv loads KEY=value pairs from a .env file into process.env at startup — use for local dev only; production injects env via Docker/CI; validate required vars with a schema and never commit secrets.
Twelve-factor apps treat config as environment — dotenv bridges local .env files to process.env so code reads process.env.DATABASE_URL uniformly across environments.
- import 'dotenv/config' — loads .env from cwd early in entry file.
- tsx --env-file=.env — Node 20+ native env file loading; AceDevHub import scripts use this.
- .env.example — committed template without secrets; documents required keys.
- Precedence — real environment variables override .env file values.
dotenv-config.mjs
import "dotenv/config";
const config = {
port: Number(process.env.PORT ?? 4000),
databaseUrl: process.env.DATABASE_URL,
nodeEnv: process.env.NODE_ENV ?? "development",
};
if (!config.databaseUrl) {
throw new Error("DATABASE_URL is required — see apps/api/.env.example");
}
export { config };