UnhandledPromiseRejectionWarning: MongoNetworkError: не удалось подключиться к серверу [localhost: 27017] при первом подключении [MongoNetworkError - PullRequest
0 голосов
/ 24 апреля 2018

Я попытался выполнить следующую команду:

node index.js

Однако из терминала я получаю следующее:

    success connection to port 3000
(node:16767) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError
: connect ECONNREFUSED 127.0.0.1:27017]
    at Pool.<anonymous> (/Users/hatchery/Documents/nodejs/fxexpress/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:503:11
)
    at emitOne (events.js:116:13)
    at Pool.emit (events.js:211:7)
    at Connection.<anonymous> (/Users/hatchery/Documents/nodejs/fxexpress/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:326:12)
    at Object.onceWrapper (events.js:317:30)
    at emitTwo (events.js:126:13)
    at Connection.emit (events.js:214:7)
    at Socket.<anonymous> (/Users/hatchery/Documents/nodejs/fxexpress/node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:245:50)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at emitErrorNT (internal/streams/destroy.js:64:8)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)
(node:16767) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:16767) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Я не уверен, почему я получаю эту ошибку. Кто-нибудь может посоветовать, что делать?

Ответы [ 5 ]

0 голосов
/ 14 июля 2019

Сначала я попробовал решение Скитти, и оно не сработало для меня, но я все еще сохраняю решение в своем коде, а затем я изменил app.listen(process.env.PORT || 3000);, и оно сработало для меня.

0 голосов
/ 28 июня 2019

Если вы используете mongoDB.Atlas, перейдите к сетевому доступу и установите запись в белый список: 0.0.0.0/0. enter image description here

enter image description here

Перезапустите команду.

0 голосов
/ 25 апреля 2018

Хотя вышеприведенное решение может работать, лучше понять, как отлаживать и что говорит ошибка.

Вы получили UnhandledPromiseRejectionWarning, потому что в вашем коде вы не должны обрабатывать случай отказа от обещания, когда вы подключаетесь к MongoDB.

Затем серверу узла не удалось подключиться к mongodb. Это может быть из-за нескольких причин. Один простой случай, как упомянул @Sayegh, сам сервер не работает. Может быть другая причина, например, неправильный порт и т. Д., Сервер не принимает входящие соединения и т. Д.

Как отлаживать. Первый шаг - выяснить, работает процесс или нет. Одним простым способом было бы запустить эту команду ps aux | grep mongo, которая перечисляет все процессы всех пользователей с монго в виде текста. Если это так и не удалось подключиться, найдите порт Если по-прежнему не удается подключиться, проверьте, принимает ли сервер входящее подключение, и примите его оттуда.

0 голосов
/ 21 марта 2019

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

> sudo mkdir -p /data/db
> sudo chmod -R go+w /data/db
0 голосов
/ 24 апреля 2018

Не уверен, на какой системе вы работаете, но попробуйте запустить это, если вы работаете в Linux:

mongo

или для macOS:

mongod

и оставьте его запущенным вновый терминал и попробуйте снова запустить сервер

...