2017-08-30 4 views
0

Je cours mon mongodb dans virtualbox en utilisant vagabond. J'essaie de me connecter à la base de données sur ma machine hôte en utilisant node.js, mais une erreur étrange se produit lorsque j'essaie de le faire. C'est le code que je cours.throw err lors de la connexion à mongodb dans VM en utilisant node.js

var MongoClient = require('mongodb').MongoClient; 
var url = "mongodb://localhost:6600/test"; 

MongoClient.connect(url, function(err, db){ 
    if (err){ 
    throw err; 
    } 
    console.log("Database created!"); 
    db.close(); 
}); 

Cette erreur est affichée dans la ligne de commande.

C:\Users\Morgan\Desktop\testingGrounds>node createMongoDB.js 

C:\Users\Morgan\Desktop\testingGrounds\node_modules\mongodb\lib\mongo_client.js:421 
      throw err 
     ^
[object Object] 

Et ceci est une partie pertinente du fichier Vagrantfile.

# Create a forwarded port mapping which allows access to a specific port 
    # within the machine from a port on the host machine. In the example below, 
    # accessing "localhost:8080" will access port 80 on the guest machine. 
    # config.vm.network "forwarded_port", guest: 80, host: 8080 
    # nginx 
    config.vm.network "forwarded_port", guest: 80, host: 6600 
    # # development site 
    config.vm.network "forwarded_port", guest: 3000, host: 6660 
    # db browser port 
    config.vm.network "forwarded_port", guest: 7474, host: 6666 
    # test port 
    config.vm.network "forwarded_port", guest: 8800, host: 6606 
+0

Il y a probablement une erreur plus spécifique que vous ne montrez pas, ou peut-être devriez-vous essayer 'console.error (err)' à la place pour mieux voir si ne pas. Mais 'config.vm.network" forwarded_port ", invité: 3000, hôte: 6660' semble indiquer que vous transférez du port' 80' à votre '6600' local, et MongoDB s'exécute sur le port' 27017' par défaut. Donc, sauf si vous l'avez spécifiquement assigné au port '80' (et vous ne l'avez probablement pas fait) alors vous vous connectez au mauvais port, et même fondamentalement avoir la mauvaise redirection de port mis en place. –

Répondre

0

Si vous utilisez errante pour certains dev/test en cours d'exécution au niveau local, il suffit d'utiliser une adresse IP statique il vous simplifier la vie.

Vous pouvez supprimer toute la ligne des ports redirigés à partir de votre Vagrantfile et le remplacer par:

config.vm.network :private_network, ip: "192.168.33.10" 

Dans la machine virtuelle, vous devez vous assurer que mongo est lié à cette adresse IP ou 0.0.0.0 de sorte qu'il peut écouter toutes les interfaces réseau, dans le fichier /etc/mongod.conf, assurez-vous d'avoir

bind_ip=0.0.0.0 

ou

bind_ip=192.168.33.10 

Dans votre code de nœud, vous devrez remplacer l'URL de mongo par mongodb://192.168.33.10:27017/test (en supposant que mongo s'exécute sur le port 27017; si vous avez modifié votre fichier conf, alignez ici)