Express.js: как использовать разные промежуточные программы на основе NODE_ENV?

#javascript #node.js #express

#javascript #node.js #экспресс

Вопрос:

У меня есть два промежуточных ПО: router1 для prod и router2 для тестирования и разработки. Как использовать разные промежуточные программы на основе NODE_ENV?

Как насчет следующих кодов?

 if( process.env.NODE_ENV === 'prod' ) {
    app.use('/', router1);
} else {
    app.use('/', router2);
}
  

Есть ли лучшие решения?
Спасибо

Комментарии:

1. именно так вы бы это и сделали. Я имею в виду, что вы могли бы сократить это до однострочного оператора, например app.use('/', process.env.NODE_ENV === 'prod' ? router1 : router2); , но это лучшее, что вы можете получить

Ответ №1:

Я бы сделал что-то подобное, чтобы иметь понятный набор доступных сред (вам может потребоваться промежуточная обработка и тестирование в какой-то момент), и таким образом вам не пришлось бы изменять код каждый раз, когда вы добавляете новую среду к объекту.

 var routers = {
  prod: /* declare prod router */,
  dev: /* declare dev router */,
};

app.use('/', routers[process.env.NODE_ENV] || routers.dev);
  

Комментарии:

1. Или даже более компактный: app.use('/', routers[process.env.NODE_ENV] || routers.dev);