Как правильно вынести настройки nodejs сервера в отдельный файл?

Здравствуйте.
Извените за возможно глупый вопрос,но все же подскажите новичку как делать правильно.
Естет у меня nodejs express проект,поанирую разворачивать его на нескольких машинах,и чтобы каждый раз не лазить в код сервера,хочу создать файл настроек (іп сервера,порт....,) как мне ето сделать правильно?

П.С. : А каким образом можно передають данные из етого конфига в клиенский JavaScript, из папки public, подключаемый к index.ejs ?
  • Вопрос задан
  • 5952 просмотра
Пригласить эксперта
Ответы на вопрос 7
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Правильного способа тут нет, есть много разных, все - не правильные. Предлагаю два из неправильных способов, на выбор:

Конфиг в JS файлах через require:

Файл config.js:
module.exports = {
  host: 'hostname',
  port: 80
};

Файл server.js:
// Подключение конфига
var config = require('./config.js');
// Использование конфига
console.dir(config);


Конфиг в JSON файлах через require:

Файл config.json:
{
  "host": "hostname",
  "port": 80
}

Файл server.js:
// Подключение конфига
var config = require('./config.json');
// Использование конфига
console.dir(config);
Ответ написан
Комментировать
streetflush
@streetflush
config.js
var config = {}

config.database = {};
config.server= {};

config.database.user = '';
config.database.password = '';
config.database.server = '';
config.database.database =
config.database.options = {
};
config.server.port = ;


module.exports = config;


server.js
var appConfig = require('./server/config/config');
...
app.set('port', appConfig.server.port || 8080);
...
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
в дополнение к вышесказанному предлагаю использовать ENV переменные для хранения той части конфигов, которое зависит от окружения (хосты, порты, пароли).
Ответ написан
Комментировать
@Scorpiored88 Автор вопроса
А каким образом можно передають данные из етого конфига в клиенский JavaScript, из папки public, подключаемый к index.ejs ?
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Я делаю вот так: примерчик и описание. Смысл примерно такой же, как в приложениях на Django: конфиг это код, импортим модуль в зависимости от некоторой переменной окружения, ./local.js имеет приоритет надо всем остальным.

Достоинства: очень гибко; можно "наследовать" друг от друга и переопределять конфиги в любом сочетании; не надо учить еще один язык конфигов (превед ямл) и не надо мириться с его недостатками (превед джейсон).
Недостатки: не декларативно; нет npm-модуля, чтоб из коробки; require кэширует подключенные модули, так что для обновления конфига на лету надо плясать с бубном.
Ответ написан
Комментировать
w4r_dr1v3r
@w4r_dr1v3r
начинающий
приведённый синтаксис валиден для новой пятой ноды? а то я как посмотрю все устаревает быстрее чем говнокодится разрабами
Ответ написан
Комментировать
@a1en_yeah
А если мы хотим с клиента модифицировать конфиг, как его следует подключать ? Неужели напрямую загружать при каждом запуске функции его использующей ? Ведь require загрузит файл всего один раз, при старте сервера ?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы