Saya mencoba membuat aplikasi fullstack dengan membaca tutorial berikut:
Saya mengikuti semua langkah dan kemudian mencoba menjalankan:
node server.js
Tapi saya mendapat kesalahan berikut:
Kesalahan koneksi MongoDB: MongoTimeoutError: Pemilihan server habis setelah 30000 ms pada Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308: 9) di listOnTimeout (internal / timers.js: 531: 17) di processTimers (internal / timers.js: 475: 7) {nama: 'MongoTimeoutError', alasan: Galat: hubungkan ETIMEDOUT 99.80.11.208:7017 di TCPConnectWrap.afterConnect [seperti oncomplete] (net. js: 1128: 14) {nama: 'MongoNetworkError', [Symbol (mongoErrorContextSymbol)]: {}}, [Symbol (mongoErrorContextSymbol)]: {}} (simpul: 42892) Tidak ditanganiMenghapusJumlahPengingat: Server tidak lagi diambil sebelum waktu server00 waktu alih di Timeout._onTimeout (C: \ RND \ fullstack_app \ backend \ node_modules \ mongodb \ lib \ core \ sdam \ server_selection.js: 308:9) di listOnTimeout (internal / timers.js: 531: 17) di processTimers (internal / timers.js: 475: 7)
Kode saya di server.js adalah sebagai berikut:
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'));
Ada saran?
sumber
user:password
ke Andausername and password
connection string di?Jawaban:
cukup buka panel admin mongodb atlas. Buka tab keamanan> Akses Jaringan> Lalu masukkan daftar putih IP Anda dengan menambahkannya
Lihat gambar ini untuk menemukan menu tertentu
Catatan: Periksa IP Anda di google lalu tambahkan
sumber
Pastikan bahwa "<" dan ">" dihapus ketika Anda mengganti bidang pengguna dan kata sandi. Ini berhasil untuk saya
sumber
Terkadang kesalahan ini terjadi karena Alamat IP diberikan akses ke database kami.
Pikiran Anda, aplikasi Anda dapat berfungsi dengan baik kemudian muncul dengan kesalahan seperti itu. Kapan pun ini terjadi, sebagian besar alamat IP Anda telah berubah, yang tidak termasuk dalam daftar putih alamat yang diizinkan.
Yang harus Anda lakukan adalah memperbarui daftar putih dengan alamat IP Anda saat ini
sumber
Daftar putih alamat IP koneksi Anda. Atlas hanya mengizinkan koneksi klien ke kluster dari entri dalam daftar putih proyek. Daftar putih proyek berbeda dari daftar putih API, yang membatasi akses API ke alamat IP atau CIDR tertentu.
CATATAN
Anda dapat melewati langkah ini jika Atlas menunjukkan dalam langkah Pengaturan Koneksi Keamanan bahwa Anda telah mengkonfigurasi entri daftar putih di cluster Anda. Untuk mengelola daftar putih IP, lihat Tambahkan Entri ke Daftar Putih.
Jika daftar putih kosong, Atlas meminta Anda untuk menambahkan alamat IP ke daftar putih proyek. Anda dapat:
Klik Tambahkan Alamat IP Anda Saat Ini untuk memasukkan daftar putih alamat IP Anda saat ini.
Klik Tambahkan Alamat IP yang Berbeda untuk menambahkan satu alamat IP atau rentang alamat yang diberitahukan CIDR.
Untuk cluster Atlas yang digunakan di Amazon Web Services (AWS) dan menggunakan VPC Peering, Anda dapat menambahkan Grup Keamanan yang terkait dengan VPC rekan.
Anda dapat memberikan deskripsi opsional untuk alamat IP yang baru ditambahkan atau rentang CIDR. Klik Tambahkan Alamat IP untuk menambahkan alamat ke daftar putih.
sumber
Anda dapat menghapus flag {useUnifiedTopology: true} dan menginstal ulang dependensi luoose! itu berhasil untuk saya.
sumber
Saya mendapat kesalahan yang sama. Ini adalah langkah-langkah yang saya ikuti untuk menyelesaikannya
Setelah langkah-langkah ini bekerja seperti biasa. Semoga ini bisa membantu kalian.
sumber
Anda dapat mencoba:
sumber
node 3.00 or later
dan menyalin `mongodb + srv: // user: <password> @ cluster0-3zrv8.mongodb.net / test? RetryWrites = true & w = mayoritas ''? Di sana Anda memiliki tiga opsi untuk dipilih, pilih simpul tengahSaya memiliki masalah ini, bagi saya solusinya adalah memeriksa apakah ip saya dikonfigurasi dengan benar dan sebelum mengkonfirmasi di layar ini
masukkan deskripsi gambar di sini
sumber
Silakan periksa kata sandi, nama pengguna atau konfigurasi IP Anda . Sebagian besar "Pemilihan server habis setelah 30000 ms di Timeout._onTimeout" muncul setiap kali hal-hal di atas tidak cocok dengan konfigurasi server Anda.
sumber
Saya bisa menyelesaikan masalah ini. Semuanya baik-baik saja, tetapi firewall memblokir akses ke port 27017. konektivitas dapat diuji di http://portquiz.net:7017/ atau menggunakan telnet ke titik akhir yang dapat diambil dari klaster-> Metrik.
Terima kasih, semuanya atas sarannya
sumber
Cobalah untuk membuat Pengguna baru di Akses Database dengan Metode Otentikasi default yaitu "SCRAM". Kemudian buat Cluster baru untuk itu. Itu berhasil untuk saya! File server.js saya
sumber
Apa versi luwak Anda? karena ada masalah dengan versi luwak tertentu. Silakan kunjungi tautan ini untuk detail lebih lanjut " https://github.com/Automattic/mongoose/issues/8180 ". Bagaimanapun, saya menghadapi masalah yang sama tetapi setelah menggunakan versi yang lebih lama (5.5.2), itu berhasil untuk saya. Tolong beri mencoba dan beri tahu saya apa yang terjadi.
sumber
Ini pada dasarnya mungkin karena pembaruan npm. Saya baru saja memperbarui ke npm v 6.13.7. dan saya mulai mendapatkan kesalahan itu.
Mengikuti instruksi dari @Matheus, saya berkomentar di baris "{useUnifiedTopology: true}" dan saya bisa melewatinya.
Saya memperbarui luwak dan semuanya berfungsi dengan baik.
sumber
Apakah Anda menggunakan Antivirus, Firewall, VPN atau pada jaringan terbatas (mis. Koneksi Wi-Fi / LAN komersial / komersial)? Kemudian cobalah untuk mematikannya / menghubungkan kembali ke jaringan yang berbeda. Beberapa IP / koneksi mungkin diblokir oleh administrator jaringan yang Anda gunakan atau hanya antivirus mungkin memiliki kebijakan firewall. Meskipun jika Anda miliki
0.0.0.0
diIP Address
Atlas MongoDB Anda.sumber
Saya memiliki masalah yang sama. Saya dapat terhubung dari MongoDB Compass atau aplikasi Node saya menggunakan string koneksi yang diberikan Atlas kepada saya. Saya mengatasinya dengan menambahkan Alamat IP saya ke dalam Daftar Putih di Atlas.
sumber
Untuk siapa pun yang masih berjuang melalui masalah ini. Saya menyelesaikan masalah ini dengan mengatur semua parameter seperti nama pengguna, kata sandi dan dbName dalam opsi luwak itu sendiri.
Sebelumnya kodenya seperti ini. (Ketika saya mendapatkan kesalahan).
Perhatikan bahwa url di mongo terhubung.
mongodb://${dbAddress}:${dbPort}/${dbName}
.Kode baru tanpa kesalahan.
Perhatikan opsi dan urlnya.
Ini adalah env lokal saya. Bukan produksi env.
Semoga ini akan membantu.
sumber
coba tentukan driver simpul, versi 2,2,12 dalam cluster -> connect -> sambungkan aplikasi Anda. string baru harus dengan mongodb: //. gunakan string ini untuk terhubung. jangan lupa untuk memasukkan kata sandi
sumber