Ошибка MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 не будет исправлена

#javascript #mongodb #mongoose

Вопрос:

Я пытаюсь уже более 2 часов, пытаясь выяснить, что не так с этой базой данных. Я все перепробовал. От переустановки сервера, перезапуска процессов, перезагрузки и многого другого. Он продолжает выдавать мне эту ошибку при попытке подключения:

 const serverSelectionError = new ServerSelectionError();
                               ^

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
    at NativeConnection.Connection.openUri (D:TheShedMX_node_modulesmongooselibconnection.js:797:32)
    at D:TheShedMX_node_modulesmongooselibindex.js:330:10
    at D:TheShedMX_node_modulesmongooselibhelperspromiseOrCallback.js:32:5
    at new Promise (<anonymous>)
    at promiseOrCallback (D:TheShedMX_node_modulesmongooselibhelperspromiseOrCallback.js:31:10)
    at Mongoose._promiseOrCallback (D:TheShedMX_node_modulesmongooselibindex.js:1151:10)
    at Mongoose.connect (D:TheShedMX_node_modulesmongooselibindex.js:329:20)
    at module.exports (D:TheShedMX_otherDBmong.js:4:20)
    at D:TheShedMX_app.js:195:37
    at Object.<anonymous> (D:TheShedMX_app.js:197:3) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) {
      'localhost:27017' => ServerDescription {
        _hostAddress: HostAddress { isIPv6: false, host: 'localhost', port: 27017 },
        address: 'localhost:27017',
        type: 'Unknown',
        hosts: [],
        passives: [],
        arbiters: [],
        tags: {},
        minWireVersion: 0,
        maxWireVersion: 0,
        roundTripTime: -1,
        lastUpdateTime: 1421094,
        lastWriteDate: 0,
        error: MongoNetworkError: connect ECONNREFUSED ::1:27017
            at connectionFailureError (D:TheShedMX_node_modulesmongodblibcmapconnect.js:293:20)
            at Socket.<anonymous> (D:TheShedMX_node_modulesmongodblibcmapconnect.js:267:22)
            at Object.onceWrapper (node:events:510:26)
            at Socket.emit (node:events:390:28)
            at emitErrorNT (node:internal/streams/destroy:164:8)
            at emitErrorCloseNT (node:internal/streams/destroy:129:3)
            at processTicksAndRejections (node:internal/process/task_queues:83:21)
      }
    },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    logicalSessionTimeoutMinutes: undefined
  }
}
 

Эта ошибка не будет устранена независимо от того, что я делаю. Сервер MongoDB запущен, я проверил, выполнив> показать базы данных, и они перечислены в полном порядке. Кроме того, C:/data/db существует, и это тоже прекрасно.
Что мне делать?
Вот мой код подключения:

 (async () => {
    await require('./other/DB/mong')();
    console.log("Connected to Database.");
})();
 

и вот ./other/DB/mong:

 var mongoose = require("mongoose");

module.exports = async () => {
    await mongoose.connect('mongodb://localhost:27017/MX', {
        keepAlive: true,
        useNewUrlParser: true,
        useUnifiedTopology: true
    });
    return mongoose;
}
 

Комментарии:

1. Что происходит, когда вы заменяете localhost на 127.0.0.1?

Ответ №1:

MongoDB по умолчанию не привязывается к localhost на ipv6.

Если вы хотите, чтобы он прослушивал ::1, вам нужно будет включить net.ipv6 и либо включить net.bindIpAll, либо явно указать адрес обратной связи в net.bindIp

Комментарии:

1. Спасибо! это помогло мне. Для тех, кто установил mongo через homebrew, вы можете отредактировать конфигурацию с помощью vim, используя: vim /opt/homebrew/etc/mongod.conf

Ответ №2:

Я только что нашел решение в Интернете, если вы используете последнюю версию nodejs (v17.x), попробуйте обновить URL mongodb с localhost на 127.0.0.1

Это сработало для меня: slightly_smiling_face:

Комментарии:

1. Я тоже! Как странно, я весь день использовал его нормально, начал новый проект и внезапно должен был реализовать это изменение: большое спасибо!

Ответ №3:

Обновил мой URL-адрес mongodb с ‘mongodb: // localhost: 27017 / student’ на ‘mongodb: // 127.0.0.1: 27017 / student’, и у меня все получилось

Ответ №4:

вы также можете использовать mongodb://0.0.0.0:27017/database_name