#node.js #typescript #loopbackjs
#node.js #машинописный текст #loopbackjs #typescript
Вопрос:
Просто, как я должен реализовать переключение между dev и prod в приложении lp4.
Я добавил свой источник данных, и все работает нормально, но это файл .json. Как я могу переключиться на другую конфигурацию, сохраненную в файле .env, которая может быть прочитана через пакет dotenv.
Я попытался создать объект источника данных вручную, но я получаю ошибки, так что, скорее всего, мой подход неверен. Будем признательны за любое предложение.
Ответ №1:
Привет от команды LoopBack 👋
LoopBack не поддерживает dotenv из коробки.
Если вы хотите сохранить конфигурацию, зависящую от вашей среды, в файлах, то вам следует поместить вашу производственную конфигурацию в server/datasources.production.json
, а затем установить переменную среды NODE_ENV
в production
. LoopBack — это чтение server/datasources.${NODE_ENV}.json
при запуске и применение любых переопределений из этого файла поверх конфигурации по умолчанию, указанной в server/datasources.json
.
Сказав это, мы считаем, что лучше использовать https://12factor .подключитесь и обеспечьте производственную конфигурацию с помощью переменных среды. Я полагаю, это то, чего вы тоже пытаетесь достичь?
Может быть, вы ищете способ, как настроить источники данных из переменных среды? LoopBack поддерживает замену переменных в определенных файлах конфигурации, datasources.json
является одним из поддерживаемых. Например:
{
"db": {
"connector": "mysql",
"database": "${MYSQL_DB}",
"username": "${MYSQL_USER},
"password": "${MYSQL_PASSWORD}"
}
Когда дело доходит до источников данных, в частности, мы рекомендуем немного другой подход:
- Параметры подключения, используемые локальной разработкой, указаны в
server/datasources.json
файле с использованием параметров конфигурации источника данных, таких какhost
,database
,username
и т.д. - При запуске в рабочей среде (промежуточный этап и т.д.) Параметры подключения должны быть настроены с помощью одной строки подключения / URL. Файл источника данных должен содержать запись для присвоения
url
свойству значения, предоставленного средой. - Под капотом LoopBack и все соединители обеспечивают определенное поведение для поддержки этой функции:
url
свойство переопределяет все другие настройки, но молчаливо игнорируется, когда оно отсутствует.
Пример конфигурации источника данных:
{
"db": {
"connector": "mysql",
"database": "demo",
"username": "demo",
"password": "L00pBack"
"url": "${MYSQL_URL}"
}
При запуске в рабочей среде вы можете задать строку подключения следующим образом:
export MYSQL_URL=mysql://prod:strong-password@localhost/realdb
Пожалуйста, обратитесь к нашему старому сообщению в блогеhttps://strongloop.com/strongblog/managing-loopback-configurations-the-twelve-factor-way / чтобы узнать больше деталей.
Комментарии:
1. Вопрос касался конфигурации dev / prod для lb4. Этот ответ, похоже, является решением для lb3.