Меню

Среда исполнения Nodejs (environment)

04.07.2018 - Back-end, NodeJS

Environments

В более сложных или приложениях уровня enterprise, нам нужно знать в какой среде наш код запускается. Это среда разработки или продакшн. Возможно мы захотим включить/выключить некоторые фичи, основанные на текущей среде. Например, давайте представим, что мы хотим включить логгироавние HTTP запросов только в среде разработки, на компе где разрабатывался, не на продакшене. Давайте посмотрим, как нам это сделать.

Ранее мы познакомились с объектом process — это глобальный объект NODE, который дает нам доступ на текущий процесс. Этот объект имеет свойство env, который дает нам доступ к переменным среды выполнения. У нас есть стандартная переменная среды под названием NODE_ENV. И эта переменная возвращает среду выполнения для текущего приложения. Если значение не установлено, то мы получим undefined. Альтернативно, мы можем установить её извне. Мы можем установить её как Development, Testing, Staging или Production. Итак, для этого демо, давайте выводить её в консоль.

console.log(`NODE_ENV: ${process.env.NODE_ENV}`);

У нас есть другой способ получить текущую среду выполнения. И он находится в объекте app. У app объекта есть метод get, который мы используем чтобы получить различные настройки приложения. И одна из настроек — env. Внутри, этот метод использует эту process.env.NODE_ENV переменную среды выполнения, чтобы определить текущую среду. Однако, если эта переменная не установлена, то последний метод вернет Development по умолчанию.

console.log(`app: ${app.get('env')}`);

Запустим, и увидим следующую картину:

NODE_ENV: undefined
app: development
We listen 3000

Какой подход использовать, смотрите на своё усмотрение. В этом демо, мы хотим включить логгирование HTTP запросов только в среде разработки. Мы можем написать условие напримере этого:

if (app.get('env') === 'development') {
    app.use(morgan('tiny'));
    console.log('Morgan enabled...');
}

Давайте установим среду в продакшн. И посмотрим что будет.

export NODE_ENV=Production

Логгирование не запустилось.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *