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

السؤال

نشر

لقد قمت بإنشاء مشروع express.js جديد باستخدام الأوامر التالية:

express -e myBlog
npm install ejs --save
npm install

ولكن عندما أحاول تشغيل المشروع بهذا الأمر:

node app.js

يظهر لي هذا الخطأ:

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: listen EADDRINUSE
    at errnoException (net.js:884:11)
    at Server._listen2 (net.js:1022:14)
    at listen (net.js:1044:10)
    at Server.listen (net.js:1110:5)
    at Object.<anonymous> (myBlog/app.js:33:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

كيف يمكنني حل هذه المشكلة؟

Recommended Posts

  • 1
نشر
killall -9 node

يمكن للأمر أعلاه توقيف اتصال vs code عندما تكون تقوم بالتطوير عن بُعد عبر SSH  وتقتل جميع العمليات التي تستخدم NodeJS التي يمكن أن تؤدي إلى مشاكل خاصة إذا كان لديك بعض التطبيقات تستعمل من طرف عملائك او موقعك أي تكون في ال production  ، هناك طريقة أفضل للقيام بذلك باستخدام netstat للحصول على كل العمليات التي تستخدم NodeJS مع المنفذ الذي يستخدمه ثم قم بتوقيف او عادة تشغيل المنفذ الذي تريده بواسطة

 netstat -lntp | grep node

سيتم إظهار كل العمليات التي تستخدم NodeJS  مع رقم المنفذ المستخدم من طرفها 

مثال 

tcp6 0 0 :::5744 :::* LISTEN 3864/node

بعد ذلك مثلا ستقوم ب بتوقيف العملية التي تحمل PID رقم 3864 بالأمر التالي مع تغيير PID  برقم العملية التي يستخدمها تطبيق NodeJS الخاص بك 

kill -9 PID

او تقوم بإعادة تشغيلها او عمل refresh  لها لكي تحصل على PID جديد خاص بها عبر الامر التالي مع تغيير PID  برقم العملية التي يستخدمها تطبيق NodeJS الخاص بك 

kill -HUP PID

 

  • 1
نشر

Error: listen EADDRINUSE هذا الخطأ يعني أن لديك بالفعل عملية أخرى تستمع على المنفذ 3000.

لهذا يجب عليك تغيير المنفذ أو يمكنك معرفة العملية التي تستمع لهذا المنفذ

C:\> netstat -a -b

(أضف -n لإيقافه عن محاولة حل أسماء المضيف ، مما سيجعله أسرع كثيرًا.)

-a يعرض جميع الاتصالات ومنافذ الاستماع.

-b يعرض التنفيذ المتضمن في إنشاء كلٍ من الاتصال أو منفذ الاستماع. 

-n يعرض العناوين وأرقام المنافذ بشكل رقمي.

-o يعرض معرّف العملية المالك المرتبط بكل اتصال.

  • 1
نشر

كما شرح عبدالمجيد في التعليق السابق أنه يوجد Port مستخدم ولذلك يمكنك الكشف إذا كان port ما مستخدم أم لا ومن ثم إغلاقه عن طريق استخدام lsof 

lsof -i :<port no>

سيعطيك الأمر السابق ال process id ثم يمكنك إيقاف العملية

kill -9 <process id>

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...