Error ECONNREFUSED al conectarse a mongodb desde node.js

Sé que estoy haciendo algo muy estúpido y novato, pero espero que alguien me ayude a configurar una conexión de base de datos básica a mongodb desde node.js en un mac.

He instalado mongodb usando homebrew, parece haber funcionado bastante bien. Inicié el servidor (mongod) como el usuario que inició sesión localmente, abrí un segundo terminal y confirmé que podía conectarme a él mediante el uso de mongo. Cuando ejecuto mongo recibo el mensaje “conectando a: localhost: 27017 / test” seguido de un símbolo del sistema. Corrí algunos comandos en el shell de mongo, todo parece funcionar allí. Dejó ambos terminales abiertos y en funcionamiento.

También confirmó que puedo acceder a la interfaz web en localhost: 28017.

Instalé node.js y agregué el paquete de mongoose. Ahora intentamos conectarnos usando una aplicación node.js muy simple (que también se ejecuta como usuario conectado localmente):

var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); 

Recibo el siguiente error

 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) 

Golpeando mi cabeza contra la pared tratando de obtener algo tan simple de trabajar. ¿Qué me estoy perdiendo?

Editar: Aquí están los registros de mongod. Como puedes ver, lo intenté varias veces y todas fallaron instantáneamente:

 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) 

Error ECONNREFUSED

Hay pocas razones de este error en el nodo:

  1. Su puerto ya está prestando servicio, por lo que rechazará su conexión.

    ir a la línea de comando y obtener pid usando el siguiente comando

    $ lsof -i:port_number

    Ahora mata pid usando

    $ kill -9 pid(which you will get by above command)

  2. Su servidor no se está ejecutando, por ejemplo, en este caso, compruebe que su servidor mongoose se está ejecutando o ejecutando mediante el siguiente comando.

    $ mongod

  3. También existe la posibilidad de que su localhost no esté configurado correctamente, por lo tanto, utilice 127.0.0.1:27017 lugar de localhost.

Use este código para configurar su conexión 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"); }); 

Asegúrese de que mongod se esté ejecutando mientras inicia el servidor. ¿Estás usando Express o simplemente un servidor simple node.js? ¿Cuál es el mensaje de error que obtienes con el código anterior?

OK, este fue otro caso de no ser sincero en la información que publiqué anteriormente. Mi aplicación node.js era muy simple, pero estaba incluyendo otras líneas en mi código node.js que aparentemente causó este problema.

Específicamente, tuve otra variable declarada que llamaba a algún otro código que realizaba una llamada a la base de datos por separado utilizando información de db incorrecta. Esta es la razón por la cual, al usar el código de Xinzz, el error de registro de la consola no pareció cambiar. ¡En realidad no era el comando mongoose.connect que arrojaba el error!

¡Lección aprendida, localizar el problema y comentar el código no relacionado! Lo siento muchachos, sabía que esto era ser tonto.

Tuve el mismo problema Se resolvió ejecutando el mismo código en la consola del administrador .

muy extraño, pero en mi caso, cambio de conexión wifi …

Uso wifi público y cambio a mi conexión de teléfono

Tuve que enfrentar el mismo problema mientras escribía una api de descanso simple usando node.js finalmente descubrí que se debía al locking de wifi y la razón de seguridad. intente conectarlo una vez usando su punto de acceso móvil . si este es el motivo, se resolverá de inmediato.