Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 error [duplicate]

import express from 'express'
const app = express();
const port = process.env.PORT || 8000;

import mongoose from 'mongoose';

mongoose.connect("mongodb://localhost:27017/schooldb").then(() => {
    console.log("connection successfully ");
})
app.get('/', (req, res) => {
    res.send('Hello user')
})

app.listen(port, () => {
    console.log(`listening at port http://localhost:${port}`);
})

Hii i am new to learn express , i am trying to connect my mongodb to express js, i am not able to understand this error D:\Learn\Learn Express\ new_mongoose\node_modules\mongoose\lib\connection.js:792 err = new ServerSelectionError(); ^

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017 at _handleConnectionErrors (D:\Learn\Learn Express\new_mongoose\node_modules\mongoose\lib\connection.js:792:11) at NativeConnection.openUri (D:\Learn\Learn Express\new_mongoose\node_modules\mongoose\lib\connection.js:767:11) at runNextTicks (node:internal/process/task_queues:60:5) at listOnTimeout (node:internal/timers:533:9) at process.processTimers (node:internal/timers:507:7) { reason: TopologyDescription { type: 'Unknown', servers: Map(1) { 'localhost:27017' => ServerDescription { address: 'localhost:27017', type: 'Unknown', hosts: [], passives: [], arbiters: [], tags: {}, minWireVersion: 0, maxWireVersion: 0, roundTripTime: -1, lastUpdateTime: 656213806, lastWriteDate: 0, error: MongoNetworkError: connect ECONNREFUSED ::1:27017 at connectionFailureError (D:\Learn\Learn Express\new_mongoose\node_modules\mongodb\lib\cmap\connect.js:370:20) at Socket. (D:\Learn\Learn Express\new_mongoose\node_modules\mongodb\lib\cmap\connect.js:293:22) at Object.onceWrapper (node:events:628:26) at Socket.emit (node:events:513:28) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
cause: Error: connect ECONNREFUSED ::1:27017 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1487:16) { errno: -4078, code: 'ECONNREFUSED', syscall: 'connect', address: '::1', port: 27017 }, [Symbol(errorLabels)]: Set(1) { 'ResetPool' } }, topologyVersion: null, setName: null, setVersion: null, electionId: null, logicalSessionTimeoutMinutes: null, primary: null, me: null, '$clusterTime': null } }, stale: false, compatible: true, heartbeatFrequencyMS: 10000, localThresholdMS: 15, setName: null, maxElectionId: null, maxSetVersion: null, commonWireVersion: 0, logicalSessionTimeoutMinutes: null }, code: undefined }

i was expecting connection successfull message at console,please help me

like image 485
Gopal kushwah Avatar asked Oct 30 '25 02:10

Gopal kushwah


2 Answers

In node.js v18, localhost uses ipv6 address (::1), and by default mongodb localhost doesn't have ipv6 enabled. That's why you're facing this issue.

If you want to use ipv4 localhost address (127.0.0.1),

  1. Either replace localhost with 127.0.0.1.
mongoose.connect("mongodb://127.0.0.1:27017/schooldb").then(() => {
    console.log("connection successfully ");
})
  1. OR use family: 4 parameter. This tells the node.js localhost to use ipv4 address.
mongoose.connect("mongodb://localhost:27017/schooldb",{
    family: 4,
}).then(() => {
    console.log("connection successfully ");
})

OR

If you want to use the ipv6 address, then just start mongod with --ipv6 as argument. This enables mongodb ipv6 address.

mongod --ipv6
like image 64
Pratham Jaiswal Avatar answered Oct 31 '25 18:10

Pratham Jaiswal


In my case, I simply replaced the connection string from 'mongodb://localhost/MyDBName' with 'mongodb://127.0.0.1:27017/MyDBName'. Also, please ensure that the MongoDB server is up and running.

enter image description here

like image 35
saleem Avatar answered Oct 31 '25 17:10

saleem