因此,我正在阅读Manning的Getting Mean一书,并按照第5章中的步骤,尝试使用Mongolab上的db作为Heroku的附加组件。当我运行此代码(本地和Heroku上)时,它返回以下错误:
MongoError:getaddrinfo ENOTFOUND 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*/
有了它在本地运行良好。所以我不知道问题是从哪里来的。有什么建议来解决列出的错误吗?
8条答案
按热度按时间tnkciper1#
我认为您没有提供
mongoDB
所需的PORT NO.
。请给予
port no.(27017)
沿着localhost。试试这个
getaddrinfo ENOTFOUND
表示客户端无法连接到给定的地址。请尝试使用上述地址。希望这能帮上忙。
qgzx9mmu2#
您刚刚错过了指定端口号,如下所示:
确保在生产服务器上托管时更改localhost。
pxy2qtax3#
如果你使用docker解决这个问题,我用这个解决方案解决
我有同样的问题,其他解决方案对我不起作用,但我用这种方式做到了
对于mongo URI,必须使用mongodb
service name
,而不是127.0.0.1
或localhost
例如,在下面的docker-compose文件中,我的mongo服务名称是
mongodb-myapp
,我将uri更改为mongodb://mongodb-myapp:27017/myapp
,它对我有效d5vmydt94#
为mLab插件创建的Heroku环境变量称为
MONGODB_URI
(MONGOLAB_URI
可能是遗留的东西)。ryevplcw5#
所以我不知道这个过程的哪一部分解决了这个问题,但我完全删除了Heroku的mongolab插件。然后我把它添加回来,用同样的代码执行同样的步骤,它工作了!
感谢所有帮助我们的人!
ldioqlga6#
这为我解决了问题。
mpbci0fu7#
这看起来是正确的。我以前也见过这个错误(很多次)。我相信“undefined undefined”是指你的环境变量未定义。尝试控制台记录你的环境变量,以确保它们是有效的。
6rvt4ljy8#
我遇到了同样的错误,但是,在我的情况下,我使用了不同的docker容器。基本上,错误告诉你,你的应用程序无法连接到
monogodb
服务器。这可能会出现例如错误的端口号,错误的IP地址等。在我的情况下,我的docker上的mongodb
与我的服务器不在同一个网络中,所以,服务器无法从数据库中获取数据。为了解决/调试它,我做了以下几点:
1.获取Docker网络列表:
1.检查每个网络并找到相应的容器:
1.必须相互通信的容器必须在同一个网络中。所以在我的例子中,我只是断开了服务器容器与其网络的连接,并将其重新连接到
mongodb
-network: