Ошибка подключения к базе данных Mon go. плохая аутентификация не удалась героку + атлас mongodb + страпи - PullRequest
0 голосов
/ 24 февраля 2020

У меня может не хватить здесь кода для предоставления.

В настоящее время я использую strapi и запускаю свое приложение на heroku + atlas mongodb. Все работало нормально, когда я запускал приложение с postgresql от heroku, но я вместо этого перенес все в atlas mongodb.

в страпях У меня мой конфиг как

{
  "defaultConnection": "default",
  "connections": {
    "default": {
      "connector": "strapi-hook-mongoose",
      "settings": {
        "client": "mongo",
        "host": "${process.env.DATABASE_HOST}",
        "port": "${process.env.DATABASE_PORT}",
        "database": "${process.env.DATABASE_NAME}",
        "username": "${process.env.DATABASE_USERNAME}",
        "password": "${process.env.DATABASE_PASSWORD}"
      },
      "options": {
        "useNullAsDefault": true,
        "ssl": "${process.env.DATABASE_SSL}"
      }
    }
  }
}

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

DATABASE_HOST=xxxxxxx-shard-00-00-xxxxxx.mongodb.net:25758,xxxxxxx-shard-00-01-xxxxxx.mongodb.net:25758,xxxxxxx-shard-00-02-xxxxxx.mongodb.net:25758/test?ssl=true&replicaSet=xxxxxxx-shard-0&authSource=admin&retryWrites=true
DATABASE_PORT=25758
DATABASE_USERNAME=xxxxx
DATABASE_PASSWORD=xxxxx
DATABASE_NAME=xxxxx
DATABASE_SSL=true

, если я запускаю его локально, он отлично работает и может подключаться к БД.

, поэтому я развернул на heroku и пошел к настройке героку для настройки вар. Я настроил те же самые переменные, что и в .env файле

Я также проверил белый список ip atlas mongodb, я включаю белый список для всех трафика (любой ip), так что это не должно быть проблемой.

Но, как уже упоминалось, я использовал тот же .env локально и config vars на heroku .... но на heroku я получил это сообщение об ошибке

error Error connecting to the Mongo database. bad auth Authentication failed.

У всех есть предложения о том, почему аутентификация не удалась?

Заранее спасибо за любые предложения и помощь.

1 Ответ

0 голосов
/ 24 февраля 2020

DATABASE_SSL=true Переменные среды не поддерживают логические значения, то есть они передаются в виде строки. На данный момент вам нужно будет вручную установить это значение в вашей конфигурации и не передавать его через env в heroku.

...