MongoError: getaddrinfo ENOTFOUND undefined undefined:27017

MongoError: getaddrinfo ENOTFOUND undefined undefined:27017

因此,我正在努力阅读 Manning 的 Getting Mean 书,并按照第 5 章中的步骤操作,我正在尝试在 Mongolab 上使用数据库作为 Heroku 的附加组件。当我 运行 这段代码(在本地和 Heroku 上)时 returns 这个错误:

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);

故障排除我从终端启动应用程序:

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

在当地 运行 没问题。所以我不确定问题出在哪里。对解决列出的错误有什么建议吗?

这看起来是正确的。我以前也见过这个错误(很多)。 'undefined undefined' 我相信是指您的环境变量未定义。尝试控制台记录您的环境变量以确保它们有效。

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

请提供 port no.(27017) 和 localhost。

试试这个:

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

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

希望对您有所帮助。

为 mLab 附加组件创建的 Heroku 环境变量称为 MONGODB_URIMONGOLAB_URI 可能是遗留的东西)。

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

感谢所有提供帮助的人!

为 mLab 附加组件创建的 Heroku 环境变量称为 MONGODB_URI(MONGOLAB_URI 可能是遗留的东西)。(pneumee )

这解决了我的问题。

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

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

确保在生产服务器上托管时更改本地主机。

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

我有同样的问题,其他解决方案对我不起作用,但我是用这种方法解决的

for mongo URI you must use your mongodb service name instead 127.0.0.1 or 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"