Search code examples
node.jsmongodbmongoose

{ MongoTimeoutError: Server selection timed out after 30000 ms


I am making a library nodejs application on Elementary OS. My server.js:

if (process.env.NODE_ENV !== 'production') {
    require('dotenv').config();
}

........

const mongoose = require('mongoose')
mongoose.connect(process.env.DATABASE_URL, {
     useCreateIndex: true,
        useNewUrlParser: true,
        useUnifiedTopology: true, // commented out currently
    })
const db = mongoose.connection
db.on('error', error => console.error(error))
db.once('open', () => console.log('Connected to Mongoose'))


app.use('/', indexRouter)
app.use('/authors', authorRouter)
app.use('/books', bookRouter)


app.listen(process.env.PORT || 3000)

Each time I run npm run devStart (I have in package.json: "devStart": "nodemon server.js") I get this "

{ MongoTimeoutError: Server selection timed out after 30000 ms
    at Timeout.setTimeout [as _onTimeout] (/media/dan/Alte date/aplicatii nodejs/nodejs_mongo_cc/node_modules/mongodb/lib/core/sdam/server_selection.js:308:9)
    at ontimeout (timers.js:482:11)
    at tryOnTimeout (timers.js:317:5)
    at Timer.listOnTimeout (timers.js:277:5)
  name: 'MongoTimeoutError',
  reason: 
   { Error: connect ECONNREFUSED 127.0.0.1:27017
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
     name: 'MongoNetworkError',
     [Symbol(mongoErrorContextSymbol)]: {} },
  [Symbol(mongoErrorContextSymbol)]: {} }
(node:6287) UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection timed out after 30000 ms
    at Timeout.setTimeout [as _onTimeout] (/media/dan/Alte date/aplicatii nodejs/nodejs_mongo_cc/node_modules/mongodb/lib/core/sdam/server_selection.js:308:9)
    at ontimeout (timers.js:482:11)
    at tryOnTimeout (timers.js:317:5)
    at Timer.listOnTimeout (timers.js:277:5)
(node:6287) 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:6287) [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.

"

I have mongoose installed. What could be the problem?


Solution

  • This error happen if MongoDB server is not running or mongoDB URL is not proper. Is your mongoDB installed locally or it's on cloud? Also please check your connection of mongo using ROBO 3T or compass. -Thanks