从node.js连接到mongodb时发生ECONREFUBLED错误

从node.js连接到mongodb时发生ECONREFUBLED错误,node.js,mongodb,Node.js,Mongodb,我知道我在做一些非常愚蠢的事情,但我希望有人能帮我在mac上从node.js建立到mongodb的基本数据库连接 我已经使用自制软件安装了mongodb,似乎运行得很好。我已经以本地登录用户的身份启动了服务器(mongod),并打开了第二个终端,确认我可以使用mongo连接到它。当我运行mongo时,我得到一条消息“connecting to:localhost:27017/test”,后面是一个命令提示符。在mongo shell中运行了一些命令,那里的一切似乎都正常。保持两个端子打开并运行

我知道我在做一些非常愚蠢的事情,但我希望有人能帮我在mac上从node.js建立到mongodb的基本数据库连接

我已经使用自制软件安装了mongodb,似乎运行得很好。我已经以本地登录用户的身份启动了服务器(mongod),并打开了第二个终端,确认我可以使用mongo连接到它。当我运行mongo时,我得到一条消息“connecting to:localhost:27017/test”,后面是一个命令提示符。在mongo shell中运行了一些命令,那里的一切似乎都正常。保持两个端子打开并运行

我还确认我可以访问localhost:28017的web界面

我安装了node.js并添加了mongoose包。现在尝试使用超级简单的node.js应用程序(也以本地登录用户的身份运行)进行连接:

我收到以下错误

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: connect ECONNREFUSED
    at errnoException (net.js:901:11)
    at Object.afterConnect [as oncomplete] (net.js:892:19)
我的头撞在墙上,想得到这么简单的工作。我错过了什么

编辑:这里是mongod的日志。正如你所看到的,我尝试了多次,但都在瞬间失败:

Thu Dec  5 08:19:43.700 [initandlisten] MongoDB starting : pid=14412 port=27017 dbpath=/usr/local/var/mongodb 64-bit host=mobadmins-MacBook-Pro-3.local
           08:19:43.700 [initandlisten] db version v2.4.8
           08:19:43.700 [initandlisten] git version: nogitversion
           08:19:43.700 [initandlisten] build info: Darwin mobadmins-MacBook-Pro-3.local 12.4.0 Darwin Kernel Version 12.4.0: Wed May  1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
           08:19:43.700 [initandlisten] allocator: tcmalloc
           08:19:43.700 [initandlisten] options: { bind_ip: "127.0.0.1", config: "/usr/local/etc/mongod.conf", dbpath: "/usr/local/var/mongodb", logappend: "true", logpath: "/usr/local/var/log/mongodb/mongo.log", rest: true }
           08:19:43.700 [initandlisten] journal dir=/usr/local/var/mongodb/journal
           08:19:43.700 [initandlisten] recover : no journal files present, no recovery needed
           08:19:43.729 [websvr] admin web console waiting for connections on port 28017
           08:19:43.729 [initandlisten] waiting for connections on port 27017
           08:22:34.561 [initandlisten] connection accepted from 127.0.0.1:52160 #3 (1 connection now open)
           08:22:34.563 [conn3] recv(): message len 1124073472 is too large. Max is 48000000
           08:22:34.563 [conn3] end connection 127.0.0.1:52160 (0 connections now open)
           08:24:41.298 [initandlisten] connection accepted from 127.0.0.1:52166 #4 (1 connection now open)
           08:24:41.304 [conn4] end connection 127.0.0.1:52166 (0 connections now open)
           08:25:06.938 [initandlisten] connection accepted from 127.0.0.1:52168 #5 (1 connection now open)
           08:25:06.943 [conn5] end connection 127.0.0.1:52168 (0 connections now open)
           08:25:18.220 [initandlisten] connection accepted from 127.0.0.1:52172 #6 (1 connection now open)
           08:25:18.225 [conn6] end connection 127.0.0.1:52172 (0 connections now open)
           08:25:38.811 [initandlisten] connection accepted from 127.0.0.1:52175 #7 (1 connection now open)
           08:25:38.816 [conn7] end connection 127.0.0.1:52175 (0 connections now open)

使用以下代码设置mongodb连接:

var mongoose = require('mongoose');

var mongoURI = "mongodb://localhost:27017/test";
var MongoDB = mongoose.connect(mongoURI).connection;
MongoDB.on('error', function(err) { console.log(err.message); });
MongoDB.once('open', function() {
  console.log("mongodb connection open");
});

启动服务器时确保mongod正在运行。您使用的是Express还是简单的node.js服务器?您从上述代码中得到的错误消息是什么?

好的,这是我在上面发布的信息中没有真正提供的另一种情况。我的node.js应用程序非常简单,但我在node.js代码中包含了另外几行代码,这显然是导致此问题的原因

具体地说,我声明了另一个变量,它调用了一些其他代码,这些代码使用不正确的数据库信息进行了单独的数据库调用。这就是为什么在使用Xinzz的代码时,控制台日志错误似乎没有改变。抛出错误的不是mongoose.connect命令

总结经验教训,本地化问题并注释掉不相关的代码!对不起,伙计们,我知道这是我的愚蠢。

错误

节点中出现此错误的原因如下:

  • 您的端口已在提供某些服务,因此它将拒绝您的连接

    转到命令行并使用以下命令获取pid

    $lsof-i:端口号

    现在使用

    $kill-9PID(您将通过上述命令获得)

  • 您的服务器未运行,例如,在这种情况下,请使用以下命令检查您的mongoose服务器是否正在运行或正在运行

    $mongod

  • 也有可能您的
    localhost
    配置不正确,因此请使用
    127.0.0.1:27017
    而不是localhost


  • 很奇怪,但在我的情况下,我切换wifi连接


    我使用了一些公共wifi并切换到我的电话连接

    我也遇到了同样的问题。通过在管理员控制台中运行相同的代码解决了这个问题,我在使用node.js编写简单的rest api时遇到了相同的问题 最终发现是由于无线网络堵塞和安全原因。 尝试使用移动热点连接一次。
    如果这是原因,它将立即得到解决。

    我也有同样的问题。我所做的是在另一个终端上运行
    mongodb
    命令。然后,在另一个选项卡中运行我的应用程序。这解决了我的问题。不过,我正在尝试其他解决方案,例如在建立连接之前创建一个脚本来运行
    mongodb

    如果目标数据库位于其他计算机中,有时需要检查IP、防火墙、端口转发等的正确性。

    我也有同样的问题,我所做的只是在尝试连接到Mongo服务器之前添加了一个大约10秒的
    setTimeout
    ,它立即解决了这个问题。我不知道为什么我必须添加延迟,但它起作用了…

    我也遇到了同样的问题,所以我这样修复它:

    如果您在docker容器或docker compose中运行mongo和nodejs

    因此,在nodejs mongo连接文件中,将localhost替换为mongo(在我的例子中是docker中的容器名),如下所示

    var mongoURI = "mongodb://mongo:27017/<nodejs_container_name>";
    
    var mongoURI=”mongodb://mongo:27017/";
    
    查看这篇文章


    这可能意味着mongodb没有运行。您必须通过命令行或在windows run services.msc上启用它,并启用mongodb。

    我尝试了所有可能的解决方案,但都没有帮到我。我休息了一下,改变了以下内容。简单的打字错误。在同样的情况下可以帮助别人。 发件人: app.listen((端口)=>console.log(
    服务器正在端口${port}
    )上运行)

    致: app.listen(端口,console.log(
    服务器正在端口${PORT}
    )上运行)
    早些时候让我连接到数据库mongo atlas,但get请求出错:connect EconRefused

    您可以转到mongoDB compass客户端并执行以下步骤: 1.单击“分别填写连接字段”:

    2.主机名类型:127.0.0.1


    三,。单击连接

    Mongodb没有运行,但我有node.js的模块,数据库路径丢失。修复了在根目录中创建新文件夹的问题,因此请运行 sudo mkdir-p/data/db/ 然后跑
    sudo chown
    id-u
    /data/db

    我手动启动了mongodb服务

    控制面板->管理工具->服务->Mongodb

    然后启动/重新启动它。完成了


    快乐编码!:-)

    尝试在连接URL中传递默认端口:mongodb://localhost:27017/test“这可能是一个端口冲突问题。如果我们尝试使用同一端口再次运行节点服务器,则相同的错误将同时出现。”。但是,我尝试断开与mongodb的任何现有连接并添加端口,但没有任何效果。考虑到mongod正在运行,并且我可以使用mongo连接到它,在我的node.js实例中,这似乎是某种类型的故障。也许是重新安装
    var mongoURI = "mongodb://mongo:27017/<nodejs_container_name>";