typescriptbeginner

Environment Secrets Loader

Loads and validates required environment variables at startup and throws meaningful errors for missing ones.

typescript
interface EnvConfig {
  DATABASE_URL: string;
  JWT_SECRET: string;
  PORT: number;
  NODE_ENV: 'development' | 'production' | 'test';
}

function loadEnv(): EnvConfig {
  const required = ['DATABASE_URL', 'JWT_SECRET'] as const;
  const missing = required.filter((key) => !process.env[key]);

  if (missing.length > 0) {
    throw new Error(
      `Missing required environment variables: ${missing.join(', ')}`
    );
  }

  return {
    DATABASE_URL: process.env.DATABASE_URL!,
    JWT_SECRET: process.env.JWT_SECRET!,
    PORT: parseInt(process.env.PORT || '3000', 10),
    NODE_ENV: (process.env.NODE_ENV as EnvConfig['NODE_ENV']) || 'development',
  };
}

export const env = loadEnv();

Use Cases

  • Application bootstrap
  • 12-factor app configuration

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.