foundation
Environment variables
Используйте env vars для deployment-specific config, учитывая parsing, missing values, secret exposure и test isolation.
Переменные окружения — интерфейс между orchestrator и процессом Node: только строки, наследуются от shell, видны в `process.env`.
const port = Number(process.env.PORT ?? 3000);
const enabled = process.env.FEATURE_X === 'true'; // явно, не truthy для "false"
`.env` через dotenv — удобство для dev; секреты не в git; в продакшене — platform (K8s secrets, IAM, vault). `NODE_ENV` влияет на кэш, логи и библиотеки — задавайте осознанно.
Изоляция тестов: stub env; не оставляйте мутации `process.env` без cleanup.
На интервью: ловушки строкового типа; эффекты `NODE_ENV`; почему env слаб для сложного config без парсинга.
Типовые ошибки: `if (process.env.FLAG)` и `"0"` как true; утечка env в error pages; дочерние процессы с полным env и секретами.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Парсинг и валидация в одном месте.
- Не логировать весь `process.env`.
- dotenv только локально; документируйте injection в prod.
- Восстанавливайте env после тестов.