Я пытаюсь создать полнофункциональное приложение, читая следующее руководство:
Я выполнил все шаги, а затем попытался запустить:
node server.js
Но я получил следующую ошибку:
Ошибка подключения MongoDB: MongoTimeoutError: Тайм-аут выбора сервера через 30000 мс по истечении Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) в списке listOnTimeout (внутренний / timers.js: 531: 17) в processTimers (internal / timers.js: 475: 7) {name: 'MongoTimeoutError', причина: ошибка: подключить ETIMEDOUT 99.80.11.208:27017 в TCPConnectWrap.afterConnect [as oncomplete] (нетто). js: 1128: 14) {name: 'MongoNetworkError', [Symbol (mongoErrorContextSymbol)]: {}}, [Symbol (mongoErrorContextSymbol)]: {}} (узел: 42892) UnhandledPromiseRejectionWarning: MongoTimeoutError после ошибки 300 мс: выбор сервера 300 at Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) в listOnTimeout (internal / timers.js: 531: 17) в processTimers (internal / timers.js: 475: 7)
Мой код в server.js выглядит следующим образом:
const mongoose = require('mongoose');
const router = express.Router();
// this is our MongoDB database
const dbRoute =
'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';
mongoose.Promise = global.Promise;
// connects our back end code with the database
mongoose.connect(dbRoute,
{ useNewUrlParser: true,
useUnifiedTopology: true
});
let db = mongoose.connection;
db.once('open', () => console.log('connected to the database'));
Какие-либо предложения?
источник
user:password
свойusername and password
в строке подключения?Ответы:
просто перейдите в админ-панель mongodb atlas. Перейдите на вкладку «Безопасность»> «Доступ к сети» и добавьте его в белый список.
Смотрите это изображение, чтобы найти конкретное меню
Примечание: проверьте свой IP на Google, а затем добавьте его
источник
Убедитесь, что "<" и ">" удалены при замене полей пользователя и пароля. Это сработало для меня
источник
Иногда эта ошибка возникает из-за IP-адреса, предоставленного доступа к нашей базе данных.
Имейте в виду, ваше приложение может работать хорошо, а затем возникнет такая ошибка. Каждый раз, когда это происходит, в большинстве случаев ваши IP-адреса меняются, что не разрешено в белом списке адресов.
Все, что вам нужно сделать, это обновить белый список с вашими текущими IP-адресами
источник
Внесите в список IP-адрес вашего подключения. Atlas разрешает клиентские подключения к кластеру только из записей в белом списке проекта. Белый список проекта отличается от белого списка API, который ограничивает доступ API к определенным IP-адресам или адресам CIDR.
НОТА
Вы можете пропустить этот шаг, если Atlas указывает на шаге Настройка безопасности подключения, что вы уже настроили запись белого списка в своем кластере. Чтобы управлять белым списком IP-адресов, см. Добавление записей в белый список.
Если белый список пуст, Atlas предложит вам добавить IP-адрес в белый список проекта. Вы также можете:
Нажмите «Добавить свой текущий IP-адрес», чтобы добавить в белый список ваш текущий IP-адрес.
Нажмите Добавить другой IP-адрес, чтобы добавить один IP-адрес или диапазон адресов, помеченный CIDR.
Для кластеров Atlas, развернутых в Amazon Web Services (AWS) и использующих пиринг VPC, можно добавить группу безопасности, связанную с равноправным VPC.
Вы можете предоставить дополнительное описание для вновь добавленного IP-адреса или диапазона CIDR. Нажмите Добавить IP-адрес, чтобы добавить адрес в белый список.
источник
Вы можете удалить флаг {useUnifiedTopology: true} и переустановить зависимость от mongoose! это сработало для меня.
источник
Я получил ту же ошибку. Вот шаги, которые я следовал, чтобы решить это
После этих шагов все заработало как обычно. надеюсь, это поможет вам, ребята.
источник
Ты можешь попробовать:
источник
node 3.00 or later
и скопировали `mongodb + srv: // пользователь: <пароль> @ cluster0-3zrv8.mongodb.net / test? RetryWrites = true & w = большинство ''? Там у вас есть три варианта на выбор, выберите средний узелу меня была эта проблема, для меня решение было проверить, правильно ли настроен мой ip и перед подтверждением на этом экране
введите описание изображения здесь
источник
Пожалуйста, проверьте ваш пароль, имя пользователя или настройки IP . В большинстве случаев «Выбор сервера истекает через 30000 мс при Timeout._onTimeout», когда указанные выше вещи не соответствуют конфигурации вашего сервера.
источник
Я могу решить проблему. Все было хорошо, но брандмауэр блокировал доступ к порту 27017. Подключение можно проверить по адресу http://portquiz.net:27017/ или с помощью telnet до конечной точки, которую можно получить из кластеров-> Метрики.
Спасибо всем за предложения
источник
Попробуйте создать нового пользователя в базе данных Access с методом аутентификации по умолчанию, который называется «SCRAM». Затем создайте новый кластер для этого. Это сработало для меня! Мой файл server.js
источник
Какая у вас версия мангуста? потому что есть проблема с определенной версией мангусты. Пожалуйста, перейдите по этой ссылке для получения более подробной информации " https://github.com/Automattic/mongoose/issues/8180 ". Во всяком случае, я столкнулся с той же проблемой, но после использования более старой версии (5.5.2), она работала для меня. Пожалуйста, попробуйте и дайте мне знать, что случилось.
источник
Это может быть в основном из-за обновления npm. Я только что обновился до npm v 6.13.7. и я начал получать эту ошибку.
Следуя инструкциям @Matheus, я прокомментировал строку «{useUnifiedTopology: true}» и смог ее пройти.
Я обновил мангуст, и все отлично работает.
источник
Используете ли вы какой-либо антивирус, брандмауэр, VPN или сеть с ограниченным доступом (например, рабочее / коммерческое соединение Wi-Fi / LAN)? Затем попробуйте выключить его / подключиться к другой сети. Некоторые IP-адреса / соединения могут быть заблокированы администратором сети, которую вы используете, или просто антивирус может иметь политики брандмауэра. Даже если у вас есть
0.0.0.0
в вашемIP Address
Атласе MongoDB.источник
Я была такая же проблема. Я мог подключиться из MongoDB Compass или из моего Node-приложения, используя строки подключения, которые дал мне Atlas. Я решил это, добавив свой IP-адрес в белый список в Атласе.
источник
Для всех, кто все еще борется с этим вопросом. Я решил эту проблему, установив все параметры, такие как имя пользователя, пароль и dbName, в опциях mongoose.
Ранее код был таким. (Когда я получал ошибку).
Обратите внимание, что URL в Монго подключиться.
mongodb://${dbAddress}:${dbPort}/${dbName}
,Новый код без ошибок.
Обратите внимание на варианты и URL.
Это мой местный окр. Не производственный окр.
Надеюсь, это будет полезно.
источник
попробуйте указать драйвер узла, версия 2,2,12 в кластере -> подключиться -> подключить ваше приложение. новая строка должна быть с mongodb: //. используйте эту строку для подключения. не забудьте ввести пароль
источник