Что такое NODE_ENV в Express?

var app = express();
app.set('views',settings.c.WEB_PATH + '/public/templates');
app.set('view engine','ejs');
app.configure(function(){
    app.use(express.favicon());
    app.use(express.static(settings.c.WEB_PATH + '/public'));
    app.use(express.bodyParser());
    app.use(express.cookieParser());
    app.use(express.methodOverride());
    app.use(express.session({
            cookie:{ domain:"."+settings.c.SITE_DOMAIN, maxAge:1440009999},
            secret:'hamster',
            store: r_store,
            }));
    app.use(useragent.express());
    app.use(flash());
    app.use(passport.initialize());
    app.use(passport.session());
});

Это мое приложение. Сейчас я запускаю его на производстве.

Однако кто-то рассказал мне о NODE_ENV. Должен ли я добавить его в этот код? Как его добавить?

Ответ 1

NODE_ENV - это переменная среды, NODE_ENV популярной в среде экспресс- веб-сервера. Когда приложение узла запускается, оно может проверять значение переменной среды и выполнять различные действия в зависимости от значения. NODE_ENV специально используется (по соглашению), чтобы указать, является ли конкретная среда производственной или средой разработки. Распространенным вариантом использования является выполнение дополнительного кода отладки или регистрации, если он выполняется в среде разработки.

Доступ к NODE_ENV

Вы можете использовать следующий код для доступа к переменной окружения самостоятельно, чтобы вы могли выполнять свои собственные проверки и логику:

var environment = process.env.NODE_ENV

Или, в качестве альтернативы, используйте экспресс ' app.get('env') (примечание: по умолчанию это "development")

Имейте в NODE_ENV что если вы явно не установили NODE_ENV для своей среды, он будет undefined.

Настройка NODE_ENV

Как на самом деле установить переменную среды, зависит от операционной системы и зависит от ваших пользовательских настроек.

Если вы хотите установить переменную среды как разовую, вы можете сделать это из командной строки:

  • linux & mac: export NODE_ENV=production
  • windows: $env:NODE_ENV = 'production'

В долгосрочной перспективе вы должны сохранить это, чтобы оно не сбрасывалось при перезагрузке - вместо того, чтобы перечислить все возможные способы сделать это, я позволю вам найти, как это сделать самостоятельно!

В соответствии с соглашением существует только два значения, которые вы должны использовать для NODE_ENV, production или development, строчные. Ничто не мешает вам добавлять дополнительные значения, но это, вероятно, не очень хорошая идея, так как я вижу много такого рода кода во многих модулях node_module, которые я использую:

var development = process.env.NODE_ENV !== 'production';

Обратите внимание, что это действительно плохая идея - пытаться установить NODE_ENV изнутри самого приложения узла - если вы это сделаете, оно будет применяться только к процессу, из которого оно было установлено, поэтому, вероятно, все будет работать не так, как вы ожидаете. Не делай этого - ты пожалеешь об этом.

Ответ 2

NODE_ENV - это переменная среды, которая обозначает среду узла в экспресс-сервере.

Это то, как мы устанавливаем и определяем, в какой среде мы находимся.

Это очень распространенное использование production и development.

Задавать:

export NODE_ENV=production

Получить:

Вы можете получить его, используя app.get('env')

Ответ 3

Я предполагаю, что исходный вопрос включал, как Express использует эту переменную среды.

Express использует NODE_ENV для изменения своего поведения по умолчанию. Например, в режиме разработки обработчик ошибок по умолчанию отправит обратно трассировку стека в браузер. В производственном режиме ответом является просто Internal Server Error, чтобы избежать утечки информации о реализации миру.