כיצד לפתור 'שגיאה: הקשב ל-EADDRINUSE: הכתובת כבר בשימוש'?

Kyzd Lptwr Sgy H Hqsb L Eaddrinuse Hktwbt Kbr Bsymws



Node.js היא סביבת זמן ריצה המאפשרת להפעיל קוד שנכתב בשפת JavaScript דרך דף האינטרנט או השרת המקומי. זוהי סביבה עם חוט יחיד ובעלת אופי אסינכרוני. הוא מציע מודולים מובנים וחיצוניים שונים שניתן להשתמש בהם לביצוע פעולות שונות כמו שליחת בקשות HTTP דרך השרת. בזמן אינטראקציה עם שרתים מקומיים שונים יש סיכוי לקבל שגיאות מרובות אשר נפתרות על ידי ביצוע מדריכים ספציפיים.

מדריך זה מסביר את התיקונים האפשריים עבור 'האזנה ל-EADDRINUSE: כתובת כבר בשימוש' על ידי כיסוי הסעיפים הבאים:

כיצד לפתור 'שגיאה: הקשב ל-EADDRINUSE: הכתובת כבר בשימוש'?

ה ' שגיאה: הקשב EADDRINUSE: הכתובת כבר בשימוש ' מתעורר כאשר יותר מיישום או משימה אחת מנסים לגשת לאותה יציאה. ניתן להעלות שגיאה זו במהלך שלבי הבדיקה או הפיתוח. לדוגמה, השגיאה שהוזכרה לעיל תיווצר להבנה טובה יותר:







const expressObj = לִדרוֹשׁ ( 'אֶקְסְפּרֶס' )
const demoApp = expressObj ( )
demoApp. לקבל ( '/' , ( דרישה, מילואים ) => {
מילואים json ( {
שֵׁם : 'מאמר Linuxhint על CORS' ,
שפה : 'Node.js' ,
יישום : 'corsApp' ,
מָקוֹר : 'מקור צולב' ,
תוכנת ביניים : 'CORS'
} )
} )
demoApp. להקשיב ( 8080 , ( ) => {
לְנַחֵם. עֵץ ( `השרת התחיל לפעול 'http://localhost:8080/' ` )
} )
demoApp. להקשיב ( 8080 , ( ) => {
לְנַחֵם. עֵץ ( `השרת התחיל לפעול 'http://localhost:8080/' ` )
} )

קטע הקוד שלמעלה עובד כך:



  • ראשית, ייבא את ' אֶקְסְפּרֶס ' מודול ואחסן את האובייקט שלו במשתנה חדש ' expressObj '. השתמש במשתנה זה בתור בנאי כדי ליצור יישום אקספרס חדש בשם ' demoApp '.
  • לאחר מכן, צור בקשת GET באמצעות ' לקבל() ' שיטת והגדר את דף הבית כמטפל שורש על ידי העברת ' / 'כפרמטר הראשון. הפרמטר השני הוא פונקציית התקשרות אנונימית ששולחת ' JSON ' נתונים כתגובה על ידי ניצול של ' json() ' שיטה.
  • לאחר מכן, הפוך את האפליקציה הזו להפעיל על אותו מספר יציאה של ' 8080 ' שתי פעמים. ביצוע זה של אותה יציאה פעמיים יוצר את השגיאה שהוזכרה.

הפלט שנוצר לאחר הידור של הקוד לעיל מראה את התרחשות של שגיאת 'שגיאה: הקשב EADDRINUSE: כתובת כבר בשימוש':







ישנם בעיקר שני פתרונות לפתרון השגיאה שהתרחשה בפלט לעיל, כלומר לשנות את מספרי היציאה או להפסיק את אחד התהליכים הפועלים. אבל ישנם מספר תיקונים אחרים שפותרים בעקיפין את ' שגיאה: הקשב EADDRINUSE: הכתובת כבר בשימוש 'שגיאה. פתרונות אלה יחד עם הדגמות מעשיות מובאים להלן:

פתרון 1: הפעל תהליכים ביציאות שונות

הפתרון המומלץ ביותר לשגיאה שהוזכרה הוא לזהות את מספרי היציאה עליהם פועלים שני השירותים כמו במקרה שלנו זה ' 8080 '. לאחר מכן, בחר שירות אחד באופן אקראי ושנה את מספר היציאה שלו כדי לגרום לשירותים להאזין ב-localhost אך עם מספרי יציאה שונים. הקוד שלנו לאחר השינוי הנדון מוצג להלן:



const expressObj = לִדרוֹשׁ ( 'אֶקְסְפּרֶס' )
const demoApp = expressObj ( )
demoApp. לקבל ( '/' , ( דרישה, מילואים ) => {
מילואים json ( {
שֵׁם : 'מאמר Linuxhint על CORS' ,
שפה : 'Node.js' ,
יישום : 'corsApp' ,
מָקוֹר : 'מקור צולב' ,
תוכנת ביניים : 'CORS'
} )
} )
demoApp. להקשיב ( 8080 , ( ) => {
לְנַחֵם. עֵץ ( `השרת התחיל לפעול 'http://localhost:8080/' ` )
} )
demoApp. להקשיב ( 3000 , ( ) => {
לְנַחֵם. עֵץ ( `השרת התחיל לפעול 'http://localhost:8080/' ` )
} )

הפלט שנוצר לאחר ביצוע הקוד לעיל מראה שכעת ה-' שגיאה: הקשב EADDRINUSE: הכתובת כבר בשימוש ' הבעיה נפתרה:

פתרון 2: עצירת התהליכים הפועלים באותה יציאה

דרך נוספת לפתור את השגיאה 'האזן EADDRINUSE: כתובת כבר בשימוש' היא על ידי עצירת התהליכים הפועלים ביציאה הספציפית שכבר נמצאת בשימוש. זה יהפוך את היציאה לבלתי פעילה שאליה יכול המפתח לגשת לביצוע משימות שצוינו. תהליך עצירה זה נעשה בעזרת מודול חיצוני בשם ' להרוג-פורט '.

לדוגמה, כל התהליכים הפועלים על מספר היציאה שצוין ' 8080 ' הולכים להיהרג באמצעות ' להרוג-פורט ' מודול. ישנן שתי דרכים להשתמש במודול 'הרוג-פורט' ושתי הגישות הללו מצוינות להלן:

שיטה 1: השתמש במודול 'kill-port' לאחר ההתקנה

ה ' להרוג-פורט ” מודול הוא מודול חיצוני של צד שלישי וכדי להשתמש במודול זה בתוך הפרויקט node.js. ראשית יש להוריד מודול זה על ידי ביצוע הפקודה המפורטת להלן:

npm התקנת Kill - נמל - ז

האיור שלהלן מציג את השלמת ההתקנה עבור ' להרוג-פורט משתנה:

לאחר ההתקנה, המשתמש יכול להרוג שירותים עבור מספר היציאה הנדרש. במקרה שלנו, שירותי מספר יציאה ' 8080 'הולכים להיהרג באמצעות הפקודה המוצהרת למטה:

לַהֲרוֹג - נמל -- נמל 8080

הפלט שלהלן מאשר שכל השירותים ליציאה ' 8080 ' נהרג:

שיטה 2: השתמש במודול 'kill-port' ללא התקנה

ה ' להרוג-פורט ניתן להשתמש במודול מבלי לעבור את תהליך ההתקנה על ידי ניצול של ' npx רץ החבילה. למשל, ה' להרוג-פורט ' מודול משמש כדי להרוג שתי יציאות שצוינו באמצעות פקודת רץ החבילה 'npx' המצוינת להלן:

npx להרוג - נמל 8080 9000

הפלט שלהלן מראה שהשירותים עבור יציאות שצוינו ' 9000 ' ו' 8080 ' נהרג:

טיפ בונוס: הסרת התקנה של מודול 'kill-port'.

כדי להסיר את ההתקנה של ' להרוג-פורט ' מודול גלובלי מהמערכת בצע את הפקודה המפורטת להלן:

npm הסרת התקנה להרוג - נמל - ז

פתרון 3: הפסק את שירותי Node.js ב-Windows

אם ההודעה 'שגיאה: האזנה EADDRINUSE: כתובת כבר בשימוש' עדיין נמשכת, אז הסר את כל הרצים ' node.js שירותים באמצעות GUI או CLI.

שימוש בגישת CLI

לחץ על ' חַלוֹן 'כפתור כדי לפתוח את סרגל החיפוש ולהזין את ' CMD ' בתוך תיבת החיפוש, מהתוצאות שנוצרו. לאחר מכן, בחר את ' שורת פקודה ', ולחץ על ' הפעל כמנהל ' כפתור:

על ידי בחירה באפשרות, יופיע חלון חדש של שורת בקרה, כדי להרוג את שירותי 'node.js' הפועלים כעת ברקע, בצע את הפקודה למטה:

להרוג משימות / ו / צומת IM. exe

הפלט שנוצר מראה ששירותי 'node.js' נסתיימו:

שימוש בגישת GUI

כדי להרוג את שירותי node.js הפועלים מהמערכת, פתח את ' מנהל משימות ' על ידי לחיצה על ' Ctrl + Shift + Esc 'מפתחות מיד. לאחר פתיחת 'מנהל המשימות', עבור אל ' פרטים ' סוג, בחר את ' node.exe שירות, ולחץ על ' סיום משימה ' כפתור שנמצא בכיוון ימין למטה, כפי שמוצג להלן:

זה הכל על פתרון 'שגיאה: הקשב EADDRINUSE: כתובת כבר בשימוש' ב-Node.js.

סיכום

ה'שגיאה: האזנה EADDRINUSE: כתובת כבר בשימוש' מתעוררת כאשר יותר משירות אחד מנסה להשתמש ביציאה בודדת בו-זמנית. כדי לפתור את זה, המשתמש צריך לנסות להשתמש במספר יציאה אחר או להרוג את השירותים שכבר פועלים על מספר היציאה שצוין באמצעות ' להרוג-פורט ' מודול. אם השגיאה עדיין לא נפתרה, הרוג את כל ההפעלה ' node.js 'שירותים ממנהל המשימות והפעל מחדש את היישום שלך. מדריך זה המחיש את הפתרונות האפשריים לפתרון בעיית 'שגיאה: הקשב ל-EADDRINUSE: כתובת כבר בשימוש'.