Варианты конфигураций запуска приложения
Рассмотрим запуск приложения в различных режимах.
Первый вариант.
Например, вы запускаете скрипт локально, для отладки и настройки с соответствующим флагом "debug"
node app.js -c debug
В этом режиме выбирается хост и включение или выключение логирования событий. Это могут быть любые настройки работы скрипта: выбор порта, имя базы данных и т.д. и т.п. В любом случае, режим отладки скорее всего выводит много информации, которая не должна обрабатываться и выводиться на экран в нормальном рабочем режиме.
Второй вариант
"Боевой" режим, когда вы запускаете скрипт или сервер в его штатном режиме для выполнения своих функций.
node app.js
Можно указать с флагом или без. Без флага берется дефолтный файл конфигурации production.json.
Другие варианты
Вы можете настроить множество вариантов загрузки настроек вашего приложения, соответствующие вашим потребностям. достаточно лишь добавить файл JSON
Приложение
Этот скрипт сначала читает файл route_config.json, определяет режим работы, выбирает соответствующий режиму файл конфигурации, читает его содержимое и выводит значение переменной logger из этого файла. В случае возникновения ошибок при чтении или парсинге JSON, скрипт обрабатывает их и выводит соответствующие сообщения об ошибках.
//app.js const fs = require('fs'); // Подключение модуля fs для работы с файловой системой try { // Чтение файла route_config.json const data = fs.readFileSync('route_config.json', 'utf8'); // Чтение содержимого файла route_config.json в кодировке UTF-8 const config = JSON.parse(data); // Преобразование содержимого файла в объект JavaScript const mode = process.argv[2] === '-c' ? process.argv[3] : 'production'; // Определение режима работы (debug или production) из аргументов командной строки const configFile = config[mode]; // Получение имени файла конфигурации в зависимости от выбранного режима // Чтение файла конфигурации (debug.json или production.json) const configData = fs.readFileSync(configFile, 'utf8'); // Чтение содержимого файла конфигурации let parsedConfigData; try { parsedConfigData = JSON.parse(configData); // Попытка преобразования содержимого файла конфигурации в объект JavaScript console.log(`Переменная logger: ${parsedConfigData.logger}`); // Вывод значения переменной logger из файла конфигурации } catch (err) { console.error(`Произошла ошибка при парсинге JSON в файле ${configFile}:`, err); // Обработка ошибки при парсинге JSON } } catch (err) { console.error(`Произошла ошибка при чтении JSON файла:`, err); // Обработка ошибки при чтении файла }
Пример маршрутизатора конфигураций route_config.json:
{ "production": "production.json", "config": "config.json", "debug": "debug.json" }
Вариант конфигурации для локальной отладки приложения debug.json:
{ "logger": true, "host": "localhost" }
Вариант конфигурации готового продукта production.json:
{ "logger": false, "host": "example.com" }
D:\node\mode>node app.js -c debug Переменная logger: true D:\node\mode>node app.js -c config Переменная logger: false D:\node\mode>node app.js Переменная logger: false
Далее реализуем вывод логов, если есть соответствующее разрешение в настройках скрипта.