MongoError:getaddrinfo ENOTFOUND undefined undefined:27017

txn*_*nxr 6 heroku mongoose mongodb mlab

所以我正在努力通过Manning的Getting Mean书并遵循第5章中的步骤我试图在Mongolab上使用db作为Heroku的附加组件.当我运行此代码(本地和Heroku)时,它返回此错误:

MongoError:getaddrinfo ENOTFOUND undefined undefined:27017

这是我目前的代码:

var mongoose = require('mongoose');

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

疑难解答我从终端启动了应用程序:

NODE_ENV=production MONGOLAB_URI=/*my mongo uri here*/
Run Code Online (Sandbox Code Playgroud)

它本地运行良好.所以我不确定问题的来源.有关排除错误的任何建议吗?

dvd*_*blk 12

如果您在Docker Compose中运行某些副本集并尝试连接 MongoDB Compass 时遇到此问题,只需确保选中“直接连接”即可。

在此输入图像描述


Rav*_*rti 9

我认为你没有提供所PORT NO.需要的mongoDB.

port no.(27017)与localhost一起提供.

试试这个:

var dbURI = "mongodb://127.0.0.1:27017/loc8r";
Run Code Online (Sandbox Code Playgroud)

getaddrinfo ENOTFOUND表示客户端无法连接到给定的地址.请尝试使用上述地址.

我希望这有帮助.


ham*_*nia 7

如果你使用 docker 来解决这个问题,我用这个解决方案解决这个问题

我有同样的问题,其他解决方案对我不起作用,但我用这种方式做到了

对于 mongo URI,您必须使用 mongodbservice name来代替127.0.0.1,或者localhost

例如,在下面的 docker-compose 文件中,我的 mongo 服务名称是mongodb-myapp,我像这样更改 uri mongodb://mongodb-myapp:27017/myapp,它对我有用


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"
Run Code Online (Sandbox Code Playgroud)


小智 5

您只是错过了指定端口号,如下所示:

  var dbURI = "mongodb://localhost:27017/thenDBname"
Run Code Online (Sandbox Code Playgroud)

确保在生产服务器上托管时更改 localhost。

  • 请检查您的答案。两条建议的线路是相同的。 (2认同)

txn*_*nxr 2

所以我不确定这个过程的哪一部分解决了这个问题,但我完全从 Heroku 中删除/删除了 mongolab 插件。然后我将其重新添加并使用相同的代码执行相同的步骤,它成功了!

感谢所有提供帮助的人!