Próbuję utworzyć aplikację fullstack, czytając następujący samouczek:
Wykonałem wszystkie kroki, a następnie próbowałem uruchomić:
node server.js
Ale dostałem następujący błąd:
Błąd połączenia MongoDB: MongoTimeoutError: Upłynął limit czasu wyboru serwera po 30000 ms w Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) at listOnTimeout (wewnętrzny / timers.js: 531: 17) w processTimers (Internal / timers.js: 475: 7) {name: 'MongoTimeoutError', przyczyna: Błąd: podłącz ETIMEDOUT 99.80.11.208:27017 w TCPConnectWrap.afterConnect [as oncomplete] (netto. js: 1128: 14) {nazwa: „MongoNetworkError”, [Symbol (mongoErrorContextSymbol)]: {}}, [Symbol (mongoErrorContextSymbol)]: {}} (węzeł: 42892) UnhandledPromiseRejectionWarning: MongoTimeoutError: Upłynął limit czasu wyboru serwera 30000 at Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) w listOnTimeout (wewnętrzny / timers.js: 531: 17) w processTimers (wewnętrzny / timers.js: 475: 7)
Mój kod na server.js jest następujący:
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'));
Jakieś sugestie?
źródło
user:password
dousername and password
ciągu połączenia w?Odpowiedzi:
po prostu przejdź do panelu administracyjnego mongodb atlas. Przejdź do zakładki bezpieczeństwa> Dostęp do sieci> Następnie dodaj adres IP do białej listy, dodając go
Zobacz ten obraz, aby znaleźć określone menu
Uwaga: sprawdź swój adres IP w Google, a następnie dodaj go
źródło
Upewnij się, że „<” i „>” zostały usunięte po zamianie pól użytkownika i hasła. To zadziałało dla mnie
źródło
Czasami ten błąd występuje z powodu dostępu adresu IP do naszej bazy danych.
Pamiętaj, że Twoja aplikacja może działać dobrze, a następnie wymyślić taki błąd. Za każdym razem, gdy tak się dzieje, najczęściej zmieniają się adresy IP użytkownika, co nie znajduje się na białej liście dozwolonych adresów.
Wystarczy, że zaktualizujesz białą listę o swoje obecne adresy IP
źródło
Umieść na liście adres IP swojego połączenia. Atlas zezwala na połączenia klientów z klastrem tylko z wpisów na białej liście projektu. Biała lista projektu różni się od białej listy API, która ogranicza dostęp API do określonych adresów IP lub CIDR.
UWAGA
Możesz pominąć ten krok, jeśli Atlas wskaże w kroku Konfiguracja zabezpieczeń połączeń, że skonfigurowałeś już pozycję białej listy w klastrze. Aby zarządzać białą listą adresów IP, zobacz Dodawanie wpisów do białej listy.
Jeśli biała lista jest pusta, Atlas wyświetli monit o dodanie adresu IP do białej listy projektu. Możesz albo:
Kliknij Dodaj swój aktualny adres IP, aby dodać swój aktualny adres do białej listy.
Kliknij opcję Dodaj inny adres IP, aby dodać pojedynczy adres IP lub zakres adresów zapisany w CIDR.
W przypadku klastrów Atlas wdrożonych w Amazon Web Services (AWS) i przy użyciu komunikacji VPC Peering można dodać grupę zabezpieczeń powiązaną z równorzędnym VPC.
Możesz podać opcjonalny opis nowo dodanego adresu IP lub zakresu CIDR. Kliknij Dodaj adres IP, aby dodać adres do białej listy.
źródło
Możesz usunąć flagę {useUnifiedTopology: true} i ponownie zainstalować zależność mangusty! zadziałało dla mnie.
źródło
Mam ten sam błąd. Oto kroki, które podjąłem, aby to rozwiązać
Po tych krokach zadziałało jak zwykle. mam nadzieję, że to wam pomoże.
źródło
Możesz spróbować:
źródło
node 3.00 or later
i skopiowałeś `` mongodb + srv: // user: <hasło> @uster0-3zrv8.mongodb.net / test? RetryWrites = true & w = większość ''? Tam masz trzy opcje do wyboru, wybierz środkowy węzełmiałem ten problem, dla mnie rozwiązaniem było sprawdzenie, czy mój adres IP jest poprawnie skonfigurowany i przed potwierdzeniem na tym ekranie
wprowadź opis zdjęcia tutaj
źródło
Proszę sprawdzić swoje hasło, nazwa użytkownika lub konfiguracji IP . Przeważnie „Upłynął limit czasu wyboru serwera po 30000 ms o Timeout._onTimeout”, ilekroć powyższe rzeczy nie są dopasowane do konfiguracji serwera.
źródło
Jestem w stanie rozwiązać problem. Wszystko było w porządku, ale zapora blokowała dostęp do portu 27017. Łączność można przetestować pod adresem http://portquiz.net:27017/ lub za pomocą telnetu do punktu końcowego, który można pobrać z klastrów-> Metryki.
Dziękujemy wszystkim za sugestie
źródło
Spróbuj utworzyć nowego użytkownika w dostępie do bazy danych przy użyciu domyślnej metody uwierzytelniania, czyli „SCRAM”. Następnie stwórz nowy Klaster. To zadziałało dla mnie! Mój plik server.js
źródło
Jaka jest twoja wersja mangusty? ponieważ występuje problem z pewną wersją mangusty. Proszę odwiedzić ten link, aby uzyskać więcej informacji „ https://github.com/Automattic/mongoose/issues/8180 ”. W każdym razie miałem ten sam problem, ale po użyciu starszej wersji (5.5.2), zadziałało to dla mnie. Spróbuj i daj mi znać, co się stało.
źródło
Może to być po prostu spowodowane aktualizacją npm. Właśnie zaktualizowałem do npm v 6.13.7. i zacząłem otrzymywać ten błąd.
Postępując zgodnie z instrukcjami @ Matheus, skomentowałem wiersz „{useUnifiedTopology: true}” i udało mi się go przejść.
Zaktualizowałem mangustę i wszystko działa dobrze.
źródło
Czy korzystasz z programu antywirusowego, zapory ogniowej, VPN lub w sieci o ograniczonym dostępie (np. W pracy / komercyjnym połączeniu Wi-Fi / LAN)? Następnie spróbuj go wyłączyć / połączyć ponownie z inną siecią. Niektóre adresy IP / połączenia mogą być blokowane przez administratora używanej sieci lub po prostu program antywirusowy może mieć zasady zapory. Nawet jeśli masz
0.0.0.0
wIP Address
atlas MongoDB.źródło
Miałem ten sam problem. Mógłbym połączyć się z MongoDB Compass lub mojej aplikacji Node za pomocą parametrów połączenia, które dał mi Atlas. Rozwiązałem go, dodając mój adres IP do białej listy w Atlasie.
źródło
Do każdego, kto wciąż zmaga się z tym problemem. Rozwiązałem ten problem, ustawiając wszystkie parametry, takie jak nazwa użytkownika, hasło i dbName w samych opcjach mangusty.
Wcześniej taki kod był. (Kiedy otrzymywałem błąd).
Pamiętaj, że URL w Mongo Connect.
mongodb://${dbAddress}:${dbPort}/${dbName}
.Nowy kod bez błędów.
Zwróć uwagę na opcje i adres URL.
To jest moja lokalna env. Nie środowisko produkcji
Mam nadzieję, że to będzie pomocne.
źródło
spróbuj określić sterownik węzła, wersja 2,2,12 w klastrze -> połącz -> połącz swoją aplikację. nowy ciąg musi być w mongodb: //. użyj tego ciągu, aby się połączyć. nie zapomnij podać hasła
źródło