يشرح هذا الدليل الإصلاحات المحتملة لمشكلة 'الاستماع إلى EADDRINUSE: العنوان قيد الاستخدام بالفعل' من خلال تغطية الأقسام التالية:
- كيفية حل 'خطأ: استمع إلى EADDRINUSE: العنوان قيد الاستخدام بالفعل'؟
- الحل 1: تشغيل العمليات على منافذ مختلفة
- الحل 2: إيقاف العمليات الجارية على نفس المنفذ
- الطريقة الأولى: استخدام وحدة 'kill-port' بعد التثبيت
- الطريقة الثانية: استخدام وحدة 'kill-port' بدون تثبيت
- نصيحة إضافية: إلغاء تثبيت وحدة 'kill-port'.
- الحل 3: إنهاء خدمات Node.js على نظام التشغيل Windows
- باستخدام نهج CLI
- باستخدام نهج واجهة المستخدم الرسومية
- خاتمة
كيفية حل 'خطأ: استمع إلى EADDRINUSE: العنوان قيد الاستخدام بالفعل'؟
ال ' خطأ: استمع EADDRINUSE: العنوان قيد الاستخدام بالفعل 'ينشأ عندما يحاول أكثر من تطبيق أو مهمة الوصول إلى نفس المنفذ. يمكن أن يظهر هذا الخطأ أثناء مراحل الاختبار أو التطوير. على سبيل المثال، سيتم إنشاء الخطأ المذكور أعلاه لفهم أفضل:
مقدار ثابت ExpressObj = يتطلب ( 'يعبر' )
مقدار ثابت com.demoApp = ExpressObj ( )
com.demoApp. يحصل ( '/' , ( الطلب، الدقة ) => {
الدقة. json ( {
اسم : 'مقالة Linuxhint عن CORS' ,
لغة : 'نود.جي إس' ,
طلب : 'كورس اب' ,
أصل : 'عبر الأصل' ,
الوسيطة : 'كورس'
} )
} )
com.demoApp. يستمع ( 8080 , ( ) => {
وحدة التحكم. سجل ( `بدأ تشغيل الخادم 'http://localhost:8080/' ` )
} )
com.demoApp. يستمع ( 8080 , ( ) => {
وحدة التحكم. سجل ( `بدأ تشغيل الخادم 'http://localhost:8080/' ` )
} )
يعمل مقتطف الكود أعلاه على النحو التالي:
- أولاً، قم باستيراد ' يعبر 'الوحدة النمطية وتخزين كائنها في متغير جديد' ExpressObj '. استخدم هذا المتغير كمنشئ لإنشاء تطبيق سريع جديد يسمى ' com.demoApp '.
- بعد ذلك، قم بإنشاء طلب GET باستخدام ' يحصل() ' وتعيين الصفحة الرئيسية كمعالج جذر عن طريق تمرير ' / ' كمعلمة أولى. المعلمة الثانية هي وظيفة رد اتصال مجهولة ترسل ' JSON 'البيانات كاستجابة من خلال الاستفادة من' جسون () ' طريقة.
- بعد ذلك، قم بتشغيل هذا التطبيق على نفس رقم المنفذ ' 8080 ' مرتين. يؤدي تنفيذ نفس المنفذ مرتين إلى إنشاء الخطأ المذكور.
يُظهر الإخراج الذي تم إنشاؤه بعد تجميع الكود أعلاه حدوث خطأ 'خطأ: استمع EADDRINUSE: العنوان قيد الاستخدام بالفعل':
يوجد حلان أساسيان لحل الخطأ الذي حدث في الإخراج أعلاه وهو تغيير أرقام المنافذ أو إيقاف إحدى العمليات الجارية. ولكن هناك أيضًا العديد من الإصلاحات الأخرى التي تعمل بشكل غير مباشر على حل المشكلة ' خطأ: استمع EADDRINUSE: العنوان قيد الاستخدام بالفعل ' خطأ. هذه الحلول إلى جانب العروض العملية مذكورة أدناه:
الحل 1: تشغيل العمليات على منافذ مختلفة
الحل الموصى به للخطأ المذكور هو تحديد أرقام المنافذ التي تعمل عليها كلتا الخدمتين كما هو الحال في حالتنا ' 8080 '. بعد ذلك، اختر خدمة واحدة بشكل عشوائي وقم بتعديل رقم المنفذ الخاص بها لجعل الخدمات تستمع على المضيف المحلي ولكن بأرقام منافذ مختلفة. يظهر الكود الخاص بنا بعد التعديل الذي تمت مناقشته أدناه:
مقدار ثابت ExpressObj = يتطلب ( 'يعبر' )
مقدار ثابت com.demoApp = ExpressObj ( )
com.demoApp. يحصل ( '/' , ( الطلب، الدقة ) => {
الدقة. json ( {
اسم : 'مقالة Linuxhint عن CORS' ,
لغة : 'نود.جي إس' ,
طلب : 'كورس اب' ,
أصل : 'عبر الأصل' ,
الوسيطة : 'كورس'
} )
} )
com.demoApp. يستمع ( 8080 , ( ) => {
وحدة التحكم. سجل ( `بدأ تشغيل الخادم 'http://localhost:8080/' ` )
} )
com.demoApp. يستمع ( 3000 , ( ) => {
وحدة التحكم. سجل ( `بدأ تشغيل الخادم 'http://localhost:8080/' ` )
} )
يُظهر الإخراج الذي تم إنشاؤه بعد تنفيذ الكود أعلاه أنه الآن ' خطأ: استمع EADDRINUSE: العنوان قيد الاستخدام بالفعل 'تم حل المشكلة:
الحل 2: إيقاف العمليات الجارية على نفس المنفذ
هناك طريقة أخرى لحل الخطأ 'استمع إلى EADDRINUSE: العنوان قيد الاستخدام بالفعل' وهي إيقاف العمليات التي تعمل على المنفذ المحدد المستخدم بالفعل. سيؤدي هذا إلى جعل المنفذ خاملاً والذي يمكن للمطور الوصول إليه لأداء مهام محددة. تتم عملية الإيقاف هذه بمساعدة وحدة خارجية تسمى ' منفذ القتل '.
على سبيل المثال، كافة العمليات التي يتم تشغيلها على رقم المنفذ المحدد ' 8080 'سوف يتم قتلهم باستخدام' منفذ القتل ' وحدة. هناك طريقتان لاستخدام وحدة 'kill-port' وكلاهما مذكور أدناه:
الطريقة الأولى: استخدام وحدة 'kill-port' بعد التثبيت
ال ' منفذ القتل 'الوحدة النمطية هي وحدة خارجية تابعة لجهة خارجية ومن أجل استخدام هذه الوحدة داخل مشروع Node.js. يجب تنزيل هذه الوحدة أولاً عن طريق تنفيذ الأمر المذكور أدناه:
قتل تثبيت npm - ميناء - زوالشكل التالي يوضح الانتهاء من تثبيت البرنامج ' منفذ القتل ' عامل:
بعد التثبيت، يمكن للمستخدم إنهاء الخدمات لرقم المنفذ المطلوب. في حالتنا، خدمات رقم المنفذ “ 8080 'سيتم قتلهم عبر الأمر المذكور أدناه:
قتل - ميناء -- ميناء 8080يؤكد الإخراج أدناه أن جميع الخدمات للمنفذ ' 8080 ' قتل:
الطريقة الثانية: استخدام وحدة 'kill-port' بدون تثبيت
ال ' منفذ القتل 'يمكن استخدام الوحدة دون المرور بعملية التثبيت عن طريق استخدام' npx 'عداء الحزمة. على سبيل المثال، ' منفذ القتل يتم استخدام الوحدة النمطية لقتل منفذين محددين باستخدام أمر تشغيل الحزمة 'npx' الموضح أدناه:
قتل npx - ميناء 8080 9000يوضح الإخراج أدناه أن الخدمات للمنافذ المحددة ' 9000 ' و ' 8080 ' قتل:
نصيحة إضافية: إلغاء تثبيت وحدة 'kill-port'.
من أجل إلغاء تثبيت ' منفذ القتل 'الوحدة النمطية عالميًا من النظام تنفذ الأمر المذكور أدناه:
قتل إلغاء تثبيت npm - ميناء - ز
الحل 3: إنهاء خدمات Node.js على نظام التشغيل Windows
إذا استمرت رسالة 'الخطأ: استمع إلى EADDRINUSE: العنوان قيد الاستخدام بالفعل'، فقم بإنهاء كافة البرامج قيد التشغيل ' Node.js 'الخدمات إما باستخدام نهج واجهة المستخدم الرسومية أو واجهة سطر الأوامر.
باستخدام نهج CLI
اضغط على ' نافذة او شباك 'زر لفتح شريط البحث وإدخال' كمد ' داخل مربع البحث، من النتائج التي تم إنشاؤها. ثم حدد ' موجه الأمر 'التطبيق، ثم اضغط على ' تشغيل كمسؤول ' زر:
من خلال تحديد الخيار، ستظهر نافذة جديدة من موجه التحكم، لإيقاف خدمات 'node.js' قيد التشغيل حاليًا في الخلفية، قم بتنفيذ الأمر أدناه:
com.taskkill / F / عقدة المراسلة الفورية. إملف تنفيذىتُظهر المخرجات التي تم إنشاؤها أنه تم إنهاء خدمات 'node.js':
باستخدام نهج واجهة المستخدم الرسومية
لإيقاف خدمات Node.js قيد التشغيل من النظام، افتح ' مدير المهام 'عن طريق الضغط على' Ctrl + Shift + Esc ' مفاتيح على الفور. بعد فتح 'إدارة المهام'، انتقل إلى ' تفاصيل 'اكتب، حدد ' العقدة.exe 'الخدمة، ثم اضغط على' إنهاء المهمة 'الزر الموجود في أسفل الاتجاه الأيمن، كما هو موضح أدناه:
يتعلق الأمر كله بحل 'خطأ: استمع إلى EADDRINUSE: العنوان قيد الاستخدام بالفعل' في Node.js.
خاتمة
ينشأ 'خطأ: استمع EADDRINUSE: العنوان قيد الاستخدام بالفعل' عندما تحاول أكثر من خدمة استخدام منفذ واحد في نفس الوقت. لحل هذه المشكلة، يجب على المستخدم محاولة استخدام رقم منفذ مختلف أو إنهاء الخدمات التي تعمل بالفعل على رقم المنفذ المحدد باستخدام ' منفذ القتل ' وحدة. إذا لم يتم حل الخطأ، قم بقتل كافة البرامج قيد التشغيل ' Node.js ' من مدير المهام وأعد تشغيل التطبيق الخاص بك. يوضح هذا الدليل الحلول الممكنة لحل مشكلة 'خطأ: استمع EADDRINUSE: العنوان قيد الاستخدام بالفعل'.