как вернее это организовать.
Например, для хранения порта, которого будет слушать Express.
Сейчас я нашёл две практики:
1. С помощью process.env
Туда заносить переменные при запуске сервера с параметрами. Но выглядит это достаточно странно:
PORT=9999 node server.js
Понятное дело, что это будет всё в Scripts, но что-то мне не нравится в этом подходе. Некрасивый он какой-то.
2. С помощью модуля config.js
Который позволяет создать папку config и оттуда подтягивать из конфигурационного файла необходимые поля.
В этом подходе под импортами приходится создавать глобальные константы вот примерно в таком формате:
const PORT = config.get("port") || 3000;
Для явности. Использовать конструкции config.get прямо при регистрации слушателя как-то не слишком правильно.
Какой подход более верный?
Вообще понятно, что process.env не резиновый. (Уж больно он некрасивым становится, если разрастается) Да и разницы от config в визуальном плане не шибко много. Что там константу приходится глобальную подключать, что тут. Но всё же, если, например, нужно будет хранить много настроек вроде адресов бд или каких-то приватных ключей, всё это вносить в process.env в скриптах запуска как-то неправильно?
3 подход: Сохранять port в app с помощью app.set('port', config.get("port") || 3000) // или с помощью process.env.PORT app.listen( app.get('port) );
В чем проблема читать прямо из конфига (config.get)?
Какие-то слишком религиозные вопросы нынче в моде. Переменные окружения можно использовать для передачи секретов, например. Держать эту инфу в конфиге идея похуже.
Обсуждают сегодня