blipblop
blipblop

Reputation: 377

MongoError: getaddrinfo ENOTFOUND undefined undefined:27017

So I'm working my way though the Getting Mean book from Manning and following the steps in Chapter 5 I'm trying to use a db on Mongolab as an add-on to Heroku. When I run this code (both locally and on Heroku) it returns this error:

MongoError: getaddrinfo ENOTFOUND undefined undefined:27017

This is my current code:

var mongoose = require('mongoose');

var dbURI = "mongodb://localhost/loc8r";
if (process.env.NODE_ENV === 'production') {
    dbURI = process.env.MONGOLAB_URI;
}
mongoose.connect(dbURI);

Troubleshooting I started the app from the terminal with:

NODE_ENV=production MONGOLAB_URI=/*my mongo uri here*/

with that it runs fine locally. So I'm not sure where the issue is coming from. Any suggestions for troubleshooting the error listed?

Upvotes: 25

Views: 106021

Answers (8)

dvdblk
dvdblk

Reputation: 2905

If you're getting this while running some replica sets in Docker Compose and trying to connect MongoDB Compass just make sure that you have the 'Direct connection' checked.

enter image description here

Upvotes: 36

Keivan
Keivan

Reputation: 1771

I had the same error, however, in my case I used different docker containers. Basically, the error is telling you that your application can not connect to the monogodb server. This can arise for instance by false port number, false IP address, etc. In my case the docker I had mongodb on was not in a same network as my server and so, the server couldn't fetch data from database.

To solve/debug it I done the followings:

  1. Get the list of docker networks:
docker network ls
  1. Inspect each network and find corresponding containers:
docker network inspect [Network Name]
  1. Containers which must communicate with each other must be in a same network. So in my case I just disconnected server container from its network and reconnect it to the mongodb-network:
docker network disconnect [Network Name] [Container Name] 
docker network connect [Network Name] [Container Name]    

Upvotes: 0

hamidreza nikoonia
hamidreza nikoonia

Reputation: 2165

if you use docker with this problem, I solve that with this solution

I have the same problem, other solutions not work for me but i did that with this way

for mongo URI you must use your mongodb service name instead 127.0.0.1 or localhost

for example in below docker-compose file my mongo service name is mongodb-myapp and i change uri like this mongodb://mongodb-myapp:27017/myapp and it works for me


services:
  boilerplate-api-app:
    build: .
    environment:
      - MONGO_URI=mongodb://mongodb-myapp:27017/myapp
    volumes:
      - .:/app
    ports:
      - "5000:5000"
    depends_on:
      - mongodb-myapp

 mongodb-myapp:
    image: mongo
    ports:
      - "27017:27017"

Upvotes: 7

Itguymax
Itguymax

Reputation: 81

You just missed specifying the port number as shown:

  var dbURI = "mongodb://localhost:27017/thenDBname"

Make sure to change localhost while hosting on production server.

Upvotes: 6

Ravi Shankar Bharti
Ravi Shankar Bharti

Reputation: 9268

I think you are not providing the PORT NO. required for mongoDB.

Please give the port no.(27017) along with localhost.

Try this:

var dbURI = "mongodb://127.0.0.1:27017/loc8r";

getaddrinfo ENOTFOUND means client was not able to connect to the given address. Please try with the above address.

I hope this helps.

Upvotes: 28

blipblop
blipblop

Reputation: 377

So I'm not sure what part of this process fixed the issue but I completely removed/deleted the mongolab addon from Heroku. Then I added it back on and performed the same exact steps with the same code and it worked!

Thanks for everyone who was helping out!

Upvotes: 2

pneumee
pneumee

Reputation: 494

The Heroku environment variable that gets created for an mLab add-on is called MONGODB_URI (MONGOLAB_URI may be a legacy thing).

Upvotes: 2

Adam
Adam

Reputation: 897

This looks correct. I've seen this error (a lot) before as well. The 'undefined undefined' I believe is referring to your environment variables being undefined. Try console logging your environment variables to make sure they're valid.

Upvotes: 0

Related Questions