Zod Environment Variables Startup Validation

Parse and validate process.env at boot with a Zod schema so missing or malformed configuration fails fast before any request is served.

JavascriptNodeConfig Management

Code

snippet
import { z } from 'zod';

const EnvSchema = z.object({
  NODE_ENV: z.enum(['development', 'test', 'production']).default('development'),
  PORT: z.coerce.number().int().min(1).max(65535).default(3000),
  DATABASE_URL: z.string().url(),
  JWT_SECRET: z.string().min(32),
  LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
});

function loadEnv() {
  const parsed = EnvSchema.safeParse(process.env);
  if (!parsed.success) {
    for (const issue of parsed.error.issues) {
      console.error('invalid env:', issue.path.join('.'), '-', issue.message);
    }
    process.exit(1);
  }
  return parsed.data;
}

export const env = loadEnv();
console.log('listening on port', env.PORT, 'in', env.NODE_ENV);