Автоматически запускать Swagger Docs, используя булевый флаг из файла env

Вопрос или проблема

Мне удалось успешно запустить URL Swagger, когда приложение на Node.js работает с помощью следующего кода.


open(swaggerURL, { app: { name: 'chrome' } });

Это замечательно. Затем я понял, что это может быть раздражающим, когда я не хочу, чтобы это происходило все время. Поэтому я создал переменную окружения вот так.

LAUNCH_BROWSER_AUTOMATICALLY=true

и добавил следующую проверку флага. Однако URL Swagger не запускается автоматически, когда флаг установлен в true.


      console.log(process.env.LAUNCH_BROWSER_AUTOMATICALLY);
      

      if(process.env.LAUNCH_BROWSER_AUTOMATICALLY == true)
      {
        open(swaggerURL, { app: { name: 'chrome' } });
      }

Я вижу в терминале, что значение переменной окружения считывается.

Подключено к MongoDB. Nodemon работает
Сервер работает по адресу http://localhost:3000
Документация Swagger доступна по адресу http://localhost:3000/api-docs
true

Как мне это заставить работать? Как я могу контролировать установку URL ‘open’ из файла окружения (если это не правильный способ это сделать)

Я думаю, вместо == следует использовать ===, это должно решить проблему с определением значения. Если это не сработает, проверьте тип переменной окружения и используйте соответствующие условия.

Ответ или решение

Для автоматического запуска документации Swagger в Node.js приложении с использованием булевого флага в файле окружения (env файл), необходимо учитывать несколько ключевых аспектов. В вашем текущем фрагменте кода имеется небольшая ошибка в сравнении значения переменной окружения, которая мешает правильной работе логики. Давайте разберем, как это можно исправить и оптимизировать.

1. Проблема с сравнением

В вашем коде вы проверяете значение переменной окружения с использованием ==, что может привести к неправильному поведению. Всё дело в том, что переменные окружения считываются из строк, и, следовательно, process.env.LAUNCH_BROWSER_AUTOMATICALLY всегда будет строкой. Когда вы сравниваете её с булевым значением true, условие всегда будет ложным. Вместо этого вам следует сравнивать её со строкой 'true'.

2. Правильный код

Чтобы решить эту проблему, измените условие на следующее:

if (process.env.LAUNCH_BROWSER_AUTOMATICALLY === 'true') {
    open(swaggerURL, { app: { name: 'chrome' } });
}

При таком подходе вы будете корректно проверять значение переменной окружения, и Swagger-документация будет автоматически открываться в браузере, когда вы установите LAUNCH_BROWSER_AUTOMATICALLY=true в вашем файле окружения.

3. Как использовать dotenv для чтения файла .env

Если ещё не сделали этого, убедитесь, что вы используете пакет dotenv для загрузки переменных окружения из файла .env. Вот как это можно сделать:

  1. Установите пакет через npm:

    npm install dotenv
  2. Импортируйте его в ваш основной файл приложения:

    require('dotenv').config();

4. Пример окончательного кода

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

require('dotenv').config();
const open = require('open'); // Не забудьте импортировать 'open'

// Ваш код инициализации сервера и подключения к MongoDB

console.log(process.env.LAUNCH_BROWSER_AUTOMATICALLY);

if (process.env.LAUNCH_BROWSER_AUTOMATICALLY === 'true') {
    open(swaggerURL, { app: { name: 'chrome' } });
}

5. Заключение

Теперь ваше приложение будет автоматически открывать документацию Swagger в браузере, если вы установите переменную окружения LAUNCH_BROWSER_AUTOMATICALLY=true. Этот подход не только исправляет вашу исходную проблему, но также упрощает управление поведением вашего приложения через файл .env.

Обязательно тестируйте изменения, чтобы удостовериться, что всё работает как задумано. Надеюсь, эту информацию было полезно прочитать!

Оцените материал
Добавить комментарий

Капча загружается...