اذهب إلى المحتوى

السؤال

نشر

 السلام عليكم ورحمة الله وبركاته
يظهر لدي خطأ عند محاولة الاتصال مع قاعدة البيانات مع انه كان يعمل في الشكل الصحيح قبل فترة ولكنني قمت في عمل فورمات للكمبيوتر الخاص فيني وثم قمت في تنزيل جميع المتلطبات واصبح المشروع لا يعمل ويظهر لي خطا وحاولت ان احل المشكلة في وضع ip anywhere في mongodb و قمت في عدة محاولات مع الذكاء الاصطناعي ولكنني لم اصل الى الحل واكرر سابقا كان يعمل بدون اي مشكلة او خطا وفجأة ظهرت هذي المشكلة وليس فقط في هذا المشروع بل في جميع المشاريع 

 

PS D:\برمجة\Programing\Websites\WebsitesProjects\Miad\backend> npm run dev

> backend@1.0.0 dev   
> nodemon src/index.js

[nodemon] 3.1.11
[nodemon] to restart at any time, enter `rs`  
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,cjs,json
[nodemon] starting `node src/index.js`        
[dotenv@17.2.3] injecting env (6) from .env -- tip: ⚙️  enable debug logging with { debug: true }
Server is running on PORT: 5001
MongoDB connection error:  Error: querySrv ECONNREFUSED _mongodb._tcp.cluster0.mf8buxy.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:294:17) {
  errno: undefined,
  code: 'ECONNREFUSED',
  syscall: 'querySrv',
  hostname: '_mongodb._tcp.cluster0.mf8buxy.mongodb.net'
}
PS D:\برمجة\Programing\Websites\WebsitesProjects\Miad\backend> 

ارجوا المساعدة وشاكر لكم 

Recommended Posts

  • 0
نشر

المشكلة من إعدادات البيئة أو الشبكة على جهازك. تأكد من:

أن سلسلة الاتصال Connection String في ملف .env لم تتغير، خصوصًا اسم المستخدم وكلمة المرور واسم الـ cluster بشكل صحيح

 DNS يعمل بشكل سليم على جهازك، لأن الخطأ querySrv ECONNREFUSED يدل على مشكلة في حل أسماء النطاقات، ويمكنك تجربة تغيير DNS إلى Google DNS مثل 8.8.8.8 و 8.8.4.4.

 حاول تحديث مكتبة mongoose و Node.js إلى إصدار مستقر، ثم أعد تشغيل الجهاز. وستحل المشكلة.

بالتوفيق

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

الخطأ الذي تواجهه (Error: querySrv ECONNREFUSED) يتعلق بمشكلة في عملية الاستعلام عن سجل SRV في DNS لخادم MongoDB Atlas (mongodb.net).

وهذا الخطأ لا يعني مشكلة في قاعدة البيانات نفسها أو في ال IP allow الذي قمت بتعديله إلى anywhere بل يشير إلى أن جهازك لا يمكنه الوصول إلى خادم DNS للحصول على معلومات الاتصال بالقاعدة. وبما أن المشكلة بدأت بعد فورمات الكمبيوتر وإعادة تثبيت المتطلبات فمن المحتمل أن تكون مرتبطة بإعدادات الشبكة أو DNS على الجهاز الجديد لديك.

تحقق من الاتصال بالإنترنت والشبكة الأساسية:

أولا تأكد من أن الإنترنت يعمل بشكل طبيعي لديك قم بتجربة الوصول إلى موقع mongodb.com من المتصفح. وإذا كنت تستخدم VPN أو proxy قم بتعطيله مؤقتا وجرب تشغيل السيرفر مرة أخرى حيث أن بعض ال VPN تمنع استعلامات DNS الخاصة ب MongoDB Atlas.

ثانيا هذا الخطأ غالبا ما يحدث بسبب مشكلة في خادم DNS الافتراضي يرجى تجربة استخدام DNS عام موثوق مثل Google DNS أو Cloudflare DNS. على Windows قم:

  •  بااذهاب إلى Settings ثم Network & Internet ثم Status ثم Change adapter options.
  • بعد ذلك انقر بزر الفأرة الأيمن على اتصال الشبكة النشط Wi-Fi أو Ethernet ثم Properties.
  • قم باختيار "Internet Protocol Version 4 (TCP/IPv4)" ثم Properties.
  • حدد "Use the following DNS server addresses"، ثم أدخل:
    • Preferred DNS server: 8.8.8.8 
    • Alternate DNS server: 8.8.4.4
  • أعد تشغيل الجهاز أو قم بـ flush DNS من خلال تشغيل الأمر في سطر الأوامر: ipconfig /flushdns.

وأخيرا تأكد من أن الـ connection string في ملف .env أو الكود صحيح. يجب أن يكون شكله مشابها ل:

mongodb+srv://<username>:<password>@cluster0.mf8buxy.mongodb.net/<dbname>?retryWrites=true&w=majority

وإذا كان يحتوي على mongodb:// بدلا من mongodb+srv://، غيره إلى +srv لأن Atlas يعتمد على SRV records.

وإذا كان ال username أو password يحتوي على رموز خاصة مثل (@ أو %)، قم بعمل URL encoding لها (مثل %40 بدلاً من @).

  • 0
نشر (معدل)

اخي فعلت كل شيء قلت لي عليه وللان لا يعمل 
وقمت في تجربة اخرى اني اتصل على شبكة الجوال وايضا لم يعمل ويظهر نفس الخطا

تم التعديل في بواسطة رضوان صهريج
  • 0
نشر
بتاريخ 15 دقائق مضت قال رضوان صهريج:

اخي فعلت كل شيء قلت لي عليه وللان لا يعمل 
وقمت في تجربة اخرى اني اتصل على شبكة الجوال وايضا لم يعمل ويظهر نفس الخطا

هل لديك برنامج حماية من الفايروسات ؟ حيث من الممكن أنه يمنع الإتصال .

قم بحذف Node من جهازك نهائيا وقم بحذف المجلدات لتالية بعد إزالته :

C:\Program Files\nodejs
C:\Users\YOUR_USER\AppData\Roaming\npm
C:\Users\YOUR_USER\AppData\Roaming\npm-cache

وفي متغيرات البيئة قم بحذف أى شئ يشير إلى node او npm وقم بإعادة تشغيل الجهاز.

وأخيرا قم بتثبيت نسخة مستقرة من node .

إذا إستمرت المشكلة فإذا بشكل كبير المشكلة في النظام ويندوز لديك إما أنه حدثت مشكلة أثناء التثبيت أو توجد مشكلة في إعداد الشبكة عليه.

  • 0
نشر

لعزل المشكلة، يجب التحقق من الخطوات التالية أولاً، في البداية تثبيت إصدار مستقر من Node.js 

وبالطبع يجب حذف الإصدار الذي لديك بالكامل من خلال control panel ثم إعادة التشغيل وتثبيت الإصدار السابق.

ثم تفقد Windows Defender Firewall فربما يمنع Node.js من الإتصال، بالخطوات التالية:

  1. افتح Windows Security
  2. اذهب إلى Firewall & network protection
  3. اضغط على Allow an app through firewall
  4. اضغط Change settings
  5. ابحث عن Node.js وتأكد أنه مفعل Private و Public وإن لم تجده، اضغط Allow another app  وأضف مسار تثبيت Node على حاسوبك:
  • C:\Program Files\nodejs\node.exe

وفي ملف الاتصال بـ MongoDB أضف الخيارات التالية لاستخدام ipv4

const mongoose = require('mongoose');

mongoose.connect(process.env.MONGO_URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    serverSelectionTimeoutMS: 30000,
    socketTimeoutMS: 45000,
    family: 4  
})
.then(() => console.log('MongoDB Connected'))
.catch(err => console.log('Error:', err));

والتجربة.

إن استمرت المشكلة، قم بتنفيذ التالي في CMD 

nslookup _mongodb._tcp.cluster0.mf8buxy.mongodb.net 8.8.8.8

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...