PassFront
  1. PassFront
  2. База знаний
  3. Основы Node.js

Как хранить конфигурацию и переменные окружения в Node.js-приложении?

Основы Node.js

Конфигурацию держат в переменных окружения и читают через process.env. Секреты не попадают в репозиторий, а один и тот же код работает в разных средах.

Принципы

  • Код не знает, где запущен: адрес БД, ключи и порты приходят снаружи (идея 12-factor).
  • Значения в process.env — всегда строки, поэтому числа и булевы приводят явно.
  • Файл .env нужен только локально и добавляется в .gitignore; в production значения задаёт окружение, секрет-хранилище или оркестратор.
  • Конфиг валидируют при старте: приложение должно упасть сразу, а не на первом запросе.
import { z } from 'zod';

const env = z.object({
  PORT: z.coerce.number().default(3000),
  DATABASE_URL: z.string().url(),
  NODE_ENV: z.enum(['development', 'test', 'production']),
}).parse(process.env);

export default env;

В Node.js 20+ есть флаг node --env-file=.env app.js, поэтому отдельный пакет не всегда нужен.

Коротко для собеседования

Конфиг идёт из окружения, секреты не коммитятся, значения приводятся к нужным типам и проверяются на старте.

Другие вопросы раздела