Ich versuche, eine Fullstack-App zu erstellen, indem ich das folgende Tutorial lese:
Ich folgte allen Schritten und versuchte dann zu rennen:
node server.js
Aber ich habe folgenden Fehler bekommen:
MongoDB-Verbindungsfehler: MongoTimeoutError: Zeitüberschreitung bei der Serverauswahl nach 30000 ms bei Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ knotenmodule \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) bei listOnTimeout (intern / timers.js: 531: 17) bei processTimers (internal / timers.js: 475: 7) {name: 'MongoTimeoutError', Grund: Fehler: Verbindung ETIMEDOUT 99.80.11.208:27017 bei TCPConnectWrap.afterConnect [als oncomplete] (net. js: 1128: 14) {name: 'MongoNetworkError', [Symbol (mongoErrorContextSymbol)]: {}}, [Symbol (mongoErrorContextSymbol)]: {}} (Knoten: 42892) UnhandledPromiseRejectionWarning: MongoTimeoutError: ms Auswahl des Servers at Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ knotenmodule \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) bei listOnTimeout (intern / timers.js: 531: 17) bei processTimers (intern / timers.js: 475: 7)
Mein Code bei server.js lautet wie folgt:
const mongoose = require('mongoose');
const router = express.Router();
// this is our MongoDB database
const dbRoute =
'mongodb+srv://user:<password>@cluster0-3zrv8.mongodb.net/test?retryWrites=true&w=majority';
mongoose.Promise = global.Promise;
// connects our back end code with the database
mongoose.connect(dbRoute,
{ useNewUrlParser: true,
useUnifiedTopology: true
});
let db = mongoose.connection;
db.once('open', () => console.log('connected to the database'));
Irgendwelche Vorschläge?
quelle
user:password
zu Ihrerusername and password
In-Verbindungszeichenfolge gewechselt ?Antworten:
Gehen Sie einfach zum Administrationsbereich von mongodb atlas. Gehen Sie zur Registerkarte Sicherheit> Netzwerkzugriff> Führen Sie dann eine Whitelist für Ihre IP durch Hinzufügen durch
In diesem Bild finden Sie das jeweilige Menü
Hinweis: Überprüfen Sie Ihre IP bei Google und fügen Sie sie hinzu
quelle
Stellen Sie sicher, dass "<" und ">" entfernt werden, wenn Sie die Benutzer- und Kennwortfelder ersetzen. Das hat bei mir funktioniert
quelle
Manchmal tritt dieser Fehler aufgrund der IP-Adresse auf, die Zugriff auf unsere Datenbank erhält.
Wohlgemerkt, Ihre Anwendung kann gut funktionieren und dann auf einen solchen Fehler stoßen. In jedem Fall haben sich Ihre IP-Adressen geändert, was nicht auf der Whitelist der zulässigen Adresse steht.
Sie müssen lediglich die Whitelist mit Ihren aktuellen IP-Adressen aktualisieren
quelle
Whitelist Ihre Verbindungs-IP-Adresse. Atlas erlaubt Clientverbindungen zum Cluster nur über Einträge in der Whitelist des Projekts. Die Projekt-Whitelist unterscheidet sich von der API-Whitelist, die den API-Zugriff auf bestimmte IP- oder CIDR-Adressen beschränkt.
HINWEIS
Sie können diesen Schritt überspringen, wenn Atlas im Schritt "Verbindungssicherheit einrichten" angibt, dass Sie bereits einen Whitelist-Eintrag in Ihrem Cluster konfiguriert haben. Informationen zum Verwalten der IP-Whitelist finden Sie unter Hinzufügen von Einträgen zur Whitelist.
Wenn die Whitelist leer ist, werden Sie von Atlas aufgefordert, der Whitelist des Projekts eine IP-Adresse hinzuzufügen. Du kannst entweder:
Klicken Sie auf Ihre aktuelle IP-Adresse hinzufügen, um Ihre aktuelle IP-Adresse auf die Whitelist zu setzen.
Klicken Sie auf Eine andere IP-Adresse hinzufügen, um eine einzelne IP-Adresse oder einen CIDR-notierten Adressbereich hinzuzufügen.
Für Atlas-Cluster, die auf Amazon Web Services (AWS) bereitgestellt werden und VPC-Peering verwenden, können Sie eine Sicherheitsgruppe hinzufügen, die der Peer-VPC zugeordnet ist.
Sie können eine optionale Beschreibung für die neu hinzugefügte IP-Adresse oder den neu hinzugefügten CIDR-Bereich angeben. Klicken Sie auf IP-Adresse hinzufügen, um die Adresse zur Whitelist hinzuzufügen.
quelle
Sie können das Flag {useUnifiedTopology: true} entfernen und die Abhängigkeit von Mungos neu installieren! es hat bei mir funktioniert.
quelle
Ich habe den gleichen Fehler bekommen. Dies sind die Schritte, die ich befolgt habe, um das Problem zu beheben
Nach diesen Schritten funktionierte es wie gewohnt. Ich hoffe, das wird euch helfen.
quelle
Du kannst es versuchen:
quelle
node 3.00 or later
und `` mongodb + srv: // user: <password> @ cluster0-3zrv8.mongodb.net / test kopiert? RetryWrites = true & w = Mehrheit ''? Dort haben Sie drei Möglichkeiten zur Auswahl, wählen Sie den mittleren KnotenIch hatte dieses Problem, für mich war die Lösung zu überprüfen, ob meine IP richtig konfiguriert ist und bevor Sie in diesem Bildschirm bestätigen
Geben Sie hier die Bildbeschreibung ein
quelle
Bitte überprüfen Sie Ihr Passwort, Ihren Benutzernamen oder Ihre IP-Konfiguration . Meistens tritt "Zeitüberschreitung bei der Serverauswahl nach 30000 ms bei Timeout._onTimeout" auf, wenn Ihre oben genannten Punkte nicht mit Ihrer Serverkonfiguration übereinstimmen.
quelle
Ich kann das Problem lösen. Alles war in Ordnung, aber die Firewall blockierte den Zugriff auf Port 27017. Die Konnektivität kann unter http://portquiz.net:27017/ oder über Telnet zum Endpunkt getestet werden, der aus Clustern-> Metriken abgerufen werden kann.
Vielen Dank an alle für die Vorschläge
quelle
Versuchen Sie, einen neuen Benutzer im Datenbankzugriff mit der Standardauthentifizierungsmethode "SCRAM" zu erstellen. Dann machen Sie dafür einen neuen Cluster. Es hat bei mir funktioniert! Meine server.js Datei
quelle
Was ist deine Mungo-Version? weil es ein Problem mit einer bestimmten Mungo-Version gibt. Bitte besuchen Sie diesen Link für weitere Details " https://github.com/Automattic/mongoose/issues/8180 ". Wie auch immer, ich hatte das gleiche Problem, aber nachdem ich eine ältere Version (5.5.2) verwendet hatte, funktionierte es für mich. Bitte versuchen Sie es und lassen Sie mich wissen, was passiert ist.
quelle
Dies kann im Grunde an einem npm-Update liegen. Ich habe gerade auf npm v 6.13.7 aktualisiert. und ich fing an, diesen Fehler zu bekommen.
Den Anweisungen von @Matheus folgend, habe ich die Zeile "{useUnifiedTopology: true}" kommentiert und konnte sie durchstehen.
Ich habe Mungo aktualisiert und alles funktioniert gut.
quelle
Verwenden Sie Antivirus, Firewall, VPN oder ein eingeschränktes Netzwerk (z. B. geschäftliche / kommerzielle Wi-Fi / LAN-Verbindung)? Versuchen Sie dann, es auszuschalten / erneut mit einem anderen Netzwerk zu verbinden. Einige IPs / Verbindungen werden möglicherweise vom Administrator eines von Ihnen verwendeten Netzwerks blockiert, oder Antivirus verfügt möglicherweise über Firewall-Richtlinien. Auch wenn Sie
0.0.0.0
in IhremIP Address
beim MongoDB Atlas haben.quelle
Ich hatte das gleiche Problem. Ich konnte über die von Atlas angegebenen Verbindungszeichenfolgen eine Verbindung über MongoDB Compass oder meine Node-App herstellen. Ich habe das Problem behoben, indem ich meine IP-Adresse zur Whitelist in Atlas hinzugefügt habe.
quelle
An alle, die sich noch mit diesem Thema auseinandersetzen. Ich habe dieses Problem behoben, indem ich alle Parameter wie Benutzername, Passwort und Datenbankname in den Mungo-Optionen selbst festgelegt habe.
Früher war der Code so. (Als ich den Fehler bekam).
Beachten Sie, dass URL in Mongo verbinden.
mongodb://${dbAddress}:${dbPort}/${dbName}
.Neuer Code ohne Fehler.
Beachten Sie die Optionen und die URL.
Dies ist meine lokale Umgebung. Nicht Produktionsumgebung.
Hoffe es wird hilfreich sein.
quelle
Versuchen Sie, den Knotentreiber, Version 2,2,12, im Cluster anzugeben -> Verbinden -> Verbinden Sie Ihre Anwendung. neue Zeichenfolge muss mit mongodb: // sein. Verwenden Sie diese Zeichenfolge, um eine Verbindung herzustellen. Vergessen Sie nicht, ein Passwort einzugeben
quelle