Невозможно подключиться к базе данных Mongodb от heroku

Я создал веб-сайт strapi, используя yarn create strapi-app velankannimatha, и выбрал mongo в качестве базы данных. Я создал БД в атласе MongoDB под названием velankannimathadb.

Я отправил сайт на Heroku после установки переменных конфигурации (т.е. DATABASE_URI и DATABASE_NAME).

Но приложение продолжает вылетать. Когда я проверил журналы, там написано

Сервер не может запуститься должным образом. Ошибка подключения к базе данных Mongo. Время ожидания выбора сервера истекло через 30000 мс

журнал ошибок

Я могу получить доступ к БД локально (в режиме разработки). Не работает только при запуске из Heroku. Любая помощь высоко ценится


person Community    schedule 10.06.2020    source источник


Ответы (3)


Вероятно, это связано с тем, что Mongo Atlas разрешает соединения только с определенных IP-адресов. См. документы. Хотя это не рекомендуется, вы можете сделать кластер доступным для любого IP-адреса с помощью 0.0.0.0/0. Вам также могут быть полезны документы по устранению неполадок.

person jcragun    schedule 10.06.2020
comment
Пытался перейти на 0.0.0.0/0, но без изменений - person ; 10.06.2020

Вам нужно изменить config/server.js ключ хоста с localhost на 0.0.0.0, поскольку Strapi пытается привязаться к localhost, а Heroku ищет открытый сервер для «прокси».

Предыдущий ответ также вполне вероятно, что вашему кластеру Mongo действительно необходимо разрешить доступ на 0.0.0.0/0, поскольку динамометрические станции heroku меняются со временем и каждый раз используют разные IP-адреса.

person Derrick Mehaffy    schedule 10.06.2020
comment
// config/server.js module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), }); Вот как это сейчас - person ; 10.06.2020

Теперь работает. Что пошло не так, так это то, что я использовал MongoDB версии 2.2.12 or later (согласно документация). Когда я перешел на версию 3.6 or later и использовал обновленную строку подключения, все заработало.

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

Эта статья на носителе тоже очень помогла.

person Community    schedule 10.06.2020