it-swarm.com.de

ECONNREFUSED-Fehler beim Herstellen einer Verbindung zu Mongodb von node.js

Ich weiß, ich mache einige dumme und noobische, aber ich hoffe, jemand kann mir helfen, eine grundlegende Datenbankverbindung zu mongodb von node.js auf einem Mac aufzubauen.

Ich habe mongodb mit Homebrew installiert, scheint recht gut funktioniert zu haben. Ich habe den Server (Mongod) als lokal angemeldeter Benutzer gestartet und ein zweites Terminal geöffnet und bestätigt, dass ich mithilfe von Mongo eine Verbindung herstellen kann. Wenn ich Mongo starte, erhalte ich die Meldung "Verbindung zu: localhost: 27017/test", gefolgt von einer Eingabeaufforderung. Lief ein paar Befehle in der Mongo-Shell, alles scheint dort zu funktionieren. Beide Terminals sind offen und in Betrieb.

Ich habe auch bestätigt, dass ich das Webinterface unter localhost: 28017 erreichen kann. 

Ich installierte node.js und fügte das mongoose-Paket hinzu. Versuchen Sie nun, eine Verbindung mit einer super einfachen node.js-App herzustellen (die auch als lokal angemeldeter Benutzer ausgeführt wird):

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

Ich erhalte die folgende Fehlermeldung

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)

Ich schlug meinen Kopf gegen die Wand und versuchte etwas so Einfaches zu erreichen. Was vermisse ich?

Edit: Hier sind die Protokolle von Mongod. Wie Sie sehen können, habe ich es mehrmals versucht und sie versagen alle sofort:

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)
35
agoldencom

OK, dies war ein weiterer Fall, dass ich in den oben genannten Informationen nicht wirklich aufkam. Meine node.js app war sehr einfach, aber ich habe ein paar weitere Zeilen in meinen node.js-Code eingefügt, die anscheinend dieses Problem verursacht haben.

Insbesondere hatte ich eine andere Variable deklariert, die einen anderen Code aufrief, der einen separaten Datenbankaufruf mit falscher Datenbankinformation ausführte. Deshalb schien sich der Konsolenprotokollfehler bei Verwendung von Xinzz-Code nicht zu ändern. Es war nicht wirklich der Befehl mongoose.connect, der den Fehler auslöste!

Lektion gelernt, lokalisieren Sie das Problem und kommentieren Sie nicht zusammenhängenden Code aus! Sorry Leute, ich wusste, dass ich dumm war.

10
agoldencom

ECONNREFUSED-Fehler

Es gibt einige Gründe für diesen Fehler im Knoten:

  1. Ihr Port bedient bereits einige Dienste, sodass er Ihre Verbindung ablehnt.

    gehen Sie zur Befehlszeile und rufen Sie die PID mit dem folgenden Befehl ab

    $ lsof -i:port_number

    Jetzt töte pid mit

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

  2. Ihr Server läuft nicht, z. Überprüfen Sie in diesem Fall, ob Ihr Mungoserver ausgeführt wird, oder führen Sie den folgenden Befehl aus.

    $ mongod

  3. Es besteht auch die Möglichkeit, dass Ihr localhost nicht richtig konfiguriert ist. Verwenden Sie daher 127.0.0.1:27017 Anstelle von localhost.

26
Anshul

Verwenden Sie diesen Code, um Ihre Mongodb-Verbindung einzurichten:

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");
});

Stellen Sie sicher, dass mongod ausgeführt wird, während Sie den Server starten. Verwenden Sie Express oder nur einen einfachen node.js-Server? Welche Fehlermeldung erhalten Sie mit dem obigen Code?

7
Xinzz

sehr seltsam, aber in meinem Fall wechsle ich die WLAN-Verbindung ...

Ich verwende ein öffentliches WLAN und wechsle zu meiner Telefonverbindung

2
itzhar

Ich hatte das gleiche Problem. Es wurde durch Ausführen des gleichen Codes in Administrator Console behoben.

2

Ich hatte das gleiche Problem, als ich eine einfache Rest-API mit Hilfe von node.js .__ schrieb. Schließlich fand ich heraus, dass dies auf wifi-Blockierung und Sicherheitsgründe zurückzuführen war.versuchen Sie es einmal mit Ihrem mobilen Hotspot .. Wenn dies der Grund ist, wird es sofort aufgelöst.

2
Adit Chauhan

Ich hatte das gleiche Problem. Alles, was ich getan habe, war ein setTimeout von ungefähr 10 Sekunden vor dem Versuch, eine Verbindung zum Mongo-Server herzustellen, und es löste das Problem sofort. Ich weiß nicht, warum ich eine Verzögerung hinzufügen musste, aber es hat funktioniert ...

1
max

Ich hatte das gleiche Problem. Ich habe den Befehl mongodb in einem anderen Terminal ausgeführt. Führen Sie dann meine Anwendung in einer anderen Registerkarte aus. Das hat mein Problem gelöst. Ich versuche jedoch eine andere Lösung, z. B. ein Skript zum Ausführen von mongodb, bevor die Verbindung hergestellt wird.

0
Ezrqn Kemboi

manchmal müssen Sie die Richtigkeit von IP, Firewall, Portweiterleitung usw. überprüfen, wenn sich Ihre Zieldatenbank auf anderen Computern befindet.

0
goodhyun