Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 582новые вакансии за сутки·92 562вакансии открыты сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 068
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 796
  • Продакт-менеджер1 248

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 761
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 259
  • CI/CD3 240
  • Мониторинг и Observability1 782
  • SRE565
  • Кибербезопасность450

Аналитика и данные

  • Data Scientist1 127
  • Бизнес-аналитик925
  • Аналитик данных845
  • Системный аналитик154

Другие направления

  • Проджект-менеджер611
  • UI/UX дизайн145
  • Ручное тестирование14

По регионам

  • Вакансии в США43 686
  • Вакансии в Европе23 668
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 889
  • Релокация в США43 686
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Express.jsВсе вопросы
Express.jsMiddleТеория

Как управлять конфигурацией, специфичной для разных окружений, в Express?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

Конфигурацию окружений в Express управляют через переменные окружения (process.env), библиотеки dotenv/.env-файлы и пакеты вроде convict или envalid для валидации схемы. NODE_ENV управляет выбором нужного конфига.

Базовая структура

npm install dotenv dotenv-expand

Файловая структура проекта:

.env              # базовые дефолты (не коммитить секреты)
.env.development  # локальная разработка
.env.test         # CI/тесты
.env.production   # продакшн (только неконфиденциальные переопределения)
.env.local        # локальные override, в .gitignore

Управление конфигурацией для разных окружений в Express

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

Загрузка конфига

// src/config/env.js
import 'dotenv/config';
import { expand } from 'dotenv-expand';
import * as dotenv from 'dotenv';

const env = dotenv.config({
  path: `.env.${process.env.NODE_ENV ?? 'development'}`,
  override: false,
});
expand(env);

Валидация схемы через envalid

Без валидации приложение может стартовать с неправильными переменными и упасть в runtime. envalid падает при старте, если что-то не так:

// src/config/index.js
import { cleanEnv, str, port, url, bool } from 'envalid';

export const config = cleanEnv(process.env, {
  NODE_ENV: str({ choices: ['development', 'test', 'production'] }),
  PORT: port({ default: 3000 }),
  DATABASE_URL: url(),
  JWT_SECRET: str({ docs: 'https://wiki.internal/jwt' }),
  REDIS_URL: url({ default: 'redis://localhost:6379' }),
  ENABLE_FEATURE_X: bool({ default: false }),
});
// src/app.js
import express from 'express';
import { config } from './config/index.js';

const app = express();

app.listen(config.PORT, () => {
  console.log(`Server running on port ${config.PORT} in ${config.NODE_ENV}`);
});

Разделение поведения по окружениям

// src/app.js
if (config.NODE_ENV === 'development') {
  const morgan = await import('morgan');
  app.use(morgan.default('dev'));
}

if (config.NODE_ENV === 'production') {
  const compression = await import('compression');
  app.use(compression.default());
}

Секреты в продакшне

На продакшне секреты хранят в менеджерах вроде AWS Secrets Manager, HashiCorp Vault или Doppler — и не в .env-файлах. Типовой паттерн: при старте контейнера секреты инжектятся как переменные окружения через entrypoint-скрипт или оркестратор (Kubernetes Secrets, ECS Task Definition).

Подводные камни

  • Коммит .env.production с секретами в репозиторий — утечка credentials.
  • Отсутствие валидации схемы: приложение стартует с undefined и падает спустя время с непонятной ошибкой.
  • Вызов dotenv.config() после импорта модулей, которые уже обращались к process.env — переменные не загружены вовремя.
  • Использование разных имён переменных в dev и prod — сложно отлаживать рассинхронизацию.
  • NODE_ENV не установлен явно в продакшне: Express по умолчанию отключает ряд оптимизаций (кеш шаблонов, сокращённые stack traces).
  • Хранение конфига как глобального singleton без unit-тестирования — тяжело мокировать в тестах.
  • Отсутствие .env.example в репозитории: новые разработчики не знают, какие переменные нужны.

Частые вопросы на собеседовании

  • В чём разница между app.use() и app.get() / app.post()?
  • Какова роль next() в middleware Express? Что происходит, если его не вызвать?
  • Как работает маршрутизация в Express? Как организовать маршруты с помощью express.Router()?
  • Что такое middleware в Express.js? Объясните цикл запрос-ответ (request-response cycle).

Типичные ошибки

  • Дает общий ответ про Node.js и не называет конкретные API Express.js.
  • Не объясняет, где в lifecycle находится конфигурация по окружениям.
  • Не разделяет validation, authorization, business logic и persistence.
  • Игнорирует ошибки, лимиты входных данных, observability и тестирование.

Что проверяет интервьюер

  • Может объяснить конфигурация по окружениям на примере кода.
  • Называет ключевые API: process.env, config schema.
  • Использует точные API Express.js, а не вымышленные hooks/decorators/methods.
  • Видит production-риски: безопасность, отказоустойчивость, логирование и тесты.

Как вы знаете этот вопрос?

Проверить себя по теме Express.js →

Источники

  • https://nodejs.org/api/process.html#processenv
  • https://expressjs.com/en/advanced/best-practice-security.html

Связанные темы

Express.jsconfiguration-managementsecurity-boundaries

Вакансии с этим навыком

  • Fullstack JavaScript разработчик