NodeJS连接MongoDB时出现错误

12

我有一个问题,无法连接我的使用nodeJS编写的socketIO应用程序和mongoDB。 我尝试在远程服务器上连接,但是它会抛出错误。

这是我的代码(mongoDB中没有设置用户名/密码):

   var url = "mongodb://192.168.1.5:27017/DB"

   MongoClient.connect(url, function(err, db) {
           console.log("test")
           if (!err) {
                   console.log("test");
           }
           else {
                   console.dir(err)
           throw err
           }
   //  db.close();
   });

当我启动服务器并尝试在浏览器中打开应用程序时,这里是服务器监听的80端口:

{ [MongoError: connect ECONNREFUSED] name: 'MongoError', message: 'connect ECONNREFUSED' }
/root/fys-realtime/examples/chat/node_modules/mongodb/lib/server.js:228
        process.nextTick(function() { throw err; })
                                            ^
Error
    at Error.MongoError (/root/fys-realtime/examples/chat/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:13:17)
    at Server.destroy (/root/fys-realtime/examples/chat/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:629:47)
    at Server.close (/root/fys-realtime/examples/chat/node_modules/mongodb/lib/server.js:344:17)
    at Db.close (/root/fys-realtime/examples/chat/node_modules/mongodb/lib/db.js:267:19)
    at /root/fys-realtime/examples/chat/node_modules/mongodb/lib/db.js:196:12
    at null.<anonymous> (/root/fys-realtime/examples/chat/node_modules/mongodb/lib/server.js:226:9)
    at g (events.js:180:16)
    at emit (events.js:98:17)
    at null.<anonymous> (/root/fys-realtime/examples/chat/node_modules/mongodb/node_modules/mongodb-core/lib/topologies/server.js:238:68)
    at g (events.js:180:16)
4个回答

14

这个错误会因为以下几种情况而返回:

  • 服务器没有运行
  • 需要对用户进行身份验证
  • 此数据库不存在
  • MongoDB端口不是默认端口

请检查以上情况,通常您的问题只是其中一个原因引起的。


谢谢,你如何捕获错误并打印出有用的信息? - SSH This
我在我的NodeJS项目中使用mongoose,但错误日志通常是相同的。MongoDB库使用回调函数。在NodeJS中,您无法使用标准的try/catch捕获回调。 - throrin19
我明白了,如果有人在我的应用程序中遇到这个错误,希望他们能够通过谷歌搜索并找到这个解决方法 :) - SSH This
实际上,这个项目使用的是mongoose,还没有使用express。 - SSH This
最近我遇到了一个错误,我的节点服务器的第一个查询是一个承诺,涉及约400个单独的数据片段。这导致连接失败,教训是:确保在进行批量请求之前建立连接。 - WouldBeNerd

7

要使此功能正常工作,您需要在 /etc/mongod.conf 文件中进行更改

注释掉 bind_ip=127.0.0.1 这一行。如果不注释掉此行,则只会监听本地接口。


我简直不敢相信这个内容没有被放在明显的位置……太荒谬了。非常感谢你的答复。 - Sam

0

其中一种解决方案是在位于 /etc 的 mongodb 配置文件中将 127.0.0.1 更改为公共 IP 或路由器提供的任何 IP。


0

出现ECONNREFUSED错误可能有几个原因。

  • 检查您的端口是否没有为其他进程提供服务。
  • 检查您的mongod是否正在运行。
  • 检查您的localHost是否已正确配置您的ID。

更多信息请参见this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接