web-dev-qa-db-fra.com

[Erreur: échec de la connexion à [localhost: 27017]] de NodeJS à mongodb

J'ai des problèmes pour me connecter à MongoDB à partir de NodeJS en utilisant le code exemple suivant. J'ai essayé d'exécuter "mongod" avec ou sans Sudo mais le code nodejs ne parvient toujours pas à se connecter. Je suis capable de me connecter avec succès à la base de données en utilisant "mongo". 

En cours d'exécution sur: MAC OS 10.6.8

   var mongoClient = require('mongodb').MongoClient;
   mongoClient.connect("mongodb://localhost:27017/test", function(error, db) {
        if(!error){
             console.log("We are connected");
        }
        else
           console.dir(error);
    });

obtenir l'erreur suivante après avoir exécuté le code ci-dessus: [Erreur: échec de la connexion à [hôte local: 27017]]

Aussi essayé mangouste mais erreur similaire:

    var mongoose = require('mongoose');
    mongoose.connect('mongodb://localhost/test');
    var db = mongoose.connection;
    db.on('error', console.error.bind(console, 'connection error:'));
    db.once('open', function callback () {
          console.log("DB connected");
    // yay!
    });

Sortie: erreur de connexion: [Erreur: échec de la connexion à [hôte local: 27017]]

Voici le journal de Mongod

mongod --help for help and startup options
2014-07-11T23:33:47.843-0700 kern.sched unavailable
2014-07-11T23:33:47.849-0700 [initandlisten] MongoDB starting : pid=29942 port=27017 dbpath=/data/db 64-bit Host=usc8bcc8a0d0b1
2014-07-11T23:33:47.849-0700 [initandlisten]
2014-07-11T23:33:47.849-0700 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2014-07-11T23:33:47.849-0700 [initandlisten] db version v2.6.3
2014-07-11T23:33:47.849-0700 [initandlisten] git version: nogitversion
2014-07-11T23:33:47.849-0700 [initandlisten] build info: Darwin usc8bcc8a0d0b1 10.8.0 Darwin Kernel Version 10.8.0: Tue Jun  7 16:33:36 PDT 2011; root:xnu-1504.15.3~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_49
2014-07-11T23:33:47.849-0700 [initandlisten] allocator: system
2014-07-11T23:33:47.849-0700 [initandlisten] options: {}
2014-07-11T23:33:47.850-0700 [initandlisten] journal dir=/data/db/journal
2014-07-11T23:33:47.850-0700 [initandlisten] recover : no journal files present, no recovery needed
2014-07-11T23:33:47.901-0700 [initandlisten] waiting for connections on port 27017
2014-07-11T23:34:47.901-0700 [clientcursormon] mem (MB) res:48 virt:2810
2014-07-11T23:34:47.901-0700 [clientcursormon]  mapped (incl journal view):320
2014-07-11T23:34:47.901-0700 [clientcursormon]  connections:0
16
user2812866

Qu'à cela ne tienne, j'ai pu résoudre le problème en utilisant 127.0.0.1 au lieu de localhost, sans savoir pourquoi je devais utiliser l'adresse IP. Mon Tomcat, Apache, Redis et même le serveur de noeud fonctionnent tous en utilisant localhost mais pas mongodb. Y a-t-il une configuration dont j'ai besoin pour que le changement fonctionne avec un hôte local? 

21
user2812866

Essayez d’ajouter 127.0.0.1 localhost dans le fichier /private/etc/hosts.

7

oui, j’ai aussi rencontré cette erreur et mes hôtes sont les suivants: 127.0.0.1 xxxxxx(the ip of my computer) et quand j’ai exécuté npm start dans un projet express, il a eu une erreur comme celle-là. Après avoir essayé de changer le mappage de 127.0.0.1 en localhost, il n'y avait pas d'erreur.

1
yuanfang wang
1
Chhavi Gangwal

Quelqu'un sur Github a trouvé une solution: Au lieu d'écrire:

Mongoose.connect(config.database.url);

Écrire:

Mongoose.connect(config.database.url, {
  keepAlive: true,
  reconnectTries: Number.MAX_VALUE,
  useMongoClient: true
});

(Source https://github.com/Automattic/mongoose/issues/5399 )

0
MrWashinton

La première fois, j'ai commis l'erreur évidente que mongod (le serveur Mongo) ne fonctionnait même pas.

La deuxième fois, le serveur (mongod) et le client (mongo) étaient exécutés sur Windows; dans des invites de commande séparées (bien sûr, mongo s'exécutant en premier). mongod et/ou son invite de commande a été "raccroché" (c’est-à-dire que la dernière ligne ne disait que cela, et la dernière ligne restait comme ça malgré les tentatives de connexion :)

2017-06-20T12:31:02.937-0600 I NETWORK  [thread1] waiting for connections on port 27017

J'ai cliqué sur l'invite de commande en appuyant sur la barre d'espace pour "donner un coup de pied", et l'invite de commande imprimait des lignes comme celles-ci:

2017-06-20T12:31:48.517-0600 I NETWORK  [thread1] connection accepted from 127.0.0.1:50260 #1 (1 connection now open)

Ce qui a fonctionné! 

0
The Red Pea