Αυτός ο οδηγός εξηγεί τις πιθανές επιδιορθώσεις για 'ακρόαση EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη' καλύπτοντας τις παρακάτω ενότητες:
- Πώς να επιλύσετε το 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη';
- Λύση 1: Εκτέλεση διεργασιών σε διαφορετικές θύρες
- Λύση 2: Διακοπή των διεργασιών που εκτελούνται στην ίδια θύρα
- Μέθοδος 1: Χρησιμοποιήστε τη μονάδα 'kill-port' μετά την εγκατάσταση
- Μέθοδος 2: Χρησιμοποιήστε τη μονάδα 'kill-port' χωρίς εγκατάσταση
- Συμβουλή μπόνους: Απεγκατάσταση της μονάδας 'kill-port'.
- Λύση 3: Τερματίστε τις Υπηρεσίες Node.js στα Windows
- Χρήση της προσέγγισης CLI
- Χρήση GUI Approach
- συμπέρασμα
Πώς να επιλύσετε το 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη';
Ο ' Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη ” προκύπτει όταν περισσότερες από μία εφαρμογές ή εργασίες προσπαθούν να αποκτήσουν πρόσβαση στην ίδια θύρα. Αυτό το σφάλμα μπορεί να προκύψει κατά τη διάρκεια των φάσεων δοκιμής ή ανάπτυξης. Για παράδειγμα, το προαναφερθέν σφάλμα θα δημιουργηθεί για καλύτερη κατανόηση:
συνθ expressObj = απαιτώ ( 'εξπρές' )
συνθ demoApp = expressObj ( )
demoApp. παίρνω ( '/' , ( απαίτηση, ανάλογ ) => {
res. json ( {
όνομα : «Άρθρο Linux για το CORS» ,
Γλώσσα : 'Node.js' ,
εφαρμογή : 'corsApp' ,
προέλευση : «Διασταυρούμενη καταγωγή» ,
ενδιάμεσο λογισμικό : 'CORS'
} )
} )
demoApp. ακούω ( 8080 , ( ) => {
κονσόλα. κούτσουρο ( `Ο διακομιστής ξεκίνησε 'http://localhost:8080/' ` )
} )
demoApp. ακούω ( 8080 , ( ) => {
κονσόλα. κούτσουρο ( `Ο διακομιστής ξεκίνησε 'http://localhost:8080/' ` )
} )
Το παραπάνω απόσπασμα κώδικα λειτουργεί ως εξής:
- Πρώτα, εισαγάγετε το ' εξπρές ' module και αποθηκεύστε το αντικείμενό της σε μια νέα μεταβλητή ' expressObj '. Χρησιμοποιήστε αυτήν τη μεταβλητή ως κατασκευαστή για να δημιουργήσετε μια νέα εφαρμογή express με το όνομα ' demoApp '.
- Στη συνέχεια, δημιουργήστε ένα αίτημα GET χρησιμοποιώντας το ' παίρνω() ' μέθοδος και ορίστε την αρχική σελίδα ως ριζικό χειριστή περνώντας ' / ” ως πρώτη παράμετρος. Η δεύτερη παράμετρος είναι μια ανώνυμη συνάρτηση επανάκλησης που στέλνει ' JSON δεδομένα ως απάντηση με τη χρήση του json() 'μέθοδος.
- Μετά από αυτό, κάντε αυτήν την εφαρμογή να εκτελείται στον ίδιο αριθμό θύρας ' 8080 ' δύο φορές. Αυτή η εκτέλεση της ίδιας θύρας δύο φορές δημιουργεί το αναφερόμενο σφάλμα.
Η έξοδος που δημιουργείται μετά τη μεταγλώττιση του παραπάνω κώδικα δείχνει την εμφάνιση ενός σφάλματος 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση ήδη σε χρήση':
Υπάρχουν κυρίως δύο λύσεις για την επίλυση του σφάλματος που παρουσιάστηκε στην παραπάνω έξοδο, δηλαδή αλλαγή των αριθμών θυρών ή διακοπή μιας από τις διεργασίες που εκτελούνται. Υπάρχουν όμως πολλές άλλες επιδιορθώσεις που επιλύουν έμμεσα το ' Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη ' λάθος. Αυτές οι λύσεις μαζί με πρακτικές επιδείξεις αναφέρονται παρακάτω:
Λύση 1: Εκτέλεση διεργασιών σε διαφορετικές θύρες
Η πιο προτεινόμενη λύση για το αναφερόμενο σφάλμα είναι να προσδιορίσετε τους αριθμούς θυρών στις οποίες εκτελούνται και οι δύο υπηρεσίες όπως στην περίπτωσή μας. 8080 '. Στη συνέχεια, επιλέξτε μια υπηρεσία τυχαία και τροποποιήστε τον αριθμό θύρας της για να κάνετε τις υπηρεσίες να ακούνε στο localhost αλλά με διαφορετικούς αριθμούς θύρας. Ο κώδικάς μας μετά την τροποποίηση που συζητήθηκε φαίνεται παρακάτω:
συνθ expressObj = απαιτώ ( 'εξπρές' )
συνθ demoApp = expressObj ( )
demoApp. παίρνω ( '/' , ( απαίτηση, ανάλογ ) => {
res. json ( {
όνομα : «Άρθρο Linux για το CORS» ,
Γλώσσα : 'Node.js' ,
εφαρμογή : 'corsApp' ,
προέλευση : «Διασταυρούμενη καταγωγή» ,
ενδιάμεσο λογισμικό : 'CORS'
} )
} )
demoApp. ακούω ( 8080 , ( ) => {
κονσόλα. κούτσουρο ( `Ο διακομιστής ξεκίνησε 'http://localhost:8080/' ` )
} )
demoApp. ακούω ( 3000 , ( ) => {
κονσόλα. κούτσουρο ( `Ο διακομιστής ξεκίνησε 'http://localhost:8080/' ` )
} )
Η έξοδος που δημιουργήθηκε μετά την εκτέλεση του παραπάνω κώδικα δείχνει ότι τώρα το ' Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη » επιλύθηκε το θέμα:
Λύση 2: Διακοπή των διεργασιών που εκτελούνται στην ίδια θύρα
Ένας άλλος τρόπος για να επιλύσετε το σφάλμα 'ακρόαση EADDRINUSE: διεύθυνση ήδη σε χρήση' είναι η διακοπή των διεργασιών που εκτελούνται στη συγκεκριμένη θύρα που χρησιμοποιείται ήδη. Αυτό θα κάνει τη θύρα σε αδράνεια, στην οποία μπορεί να έχει πρόσβαση ο προγραμματιστής για να εκτελέσει συγκεκριμένες εργασίες. Αυτή η διαδικασία διακοπής γίνεται με τη βοήθεια μιας εξωτερικής μονάδας που ονομάζεται ' kill-port '.
Για παράδειγμα, όλες οι διεργασίες που εκτελούνται στον καθορισμένο αριθμό θύρας ' 8080 'θα σκοτωθούν χρησιμοποιώντας το ' kill-port ενότητα. Υπάρχουν δύο τρόποι χρήσης της ενότητας 'kill-port' και και οι δύο αυτές προσεγγίσεις αναφέρονται παρακάτω:
Μέθοδος 1: Χρησιμοποιήστε τη μονάδα 'kill-port' μετά την εγκατάσταση
Ο ' kill-port Η ενότητα είναι μια εξωτερική λειτουργική μονάδα τρίτου κατασκευαστή και για να χρησιμοποιηθεί αυτή η λειτουργική μονάδα μέσα στο έργο node.js. Αυτή η ενότητα πρέπει να ληφθεί πρώτα εκτελώντας την παρακάτω εντολή:
npm εγκατάσταση kill - Λιμάνι - σολΤο παρακάτω σχήμα δείχνει την ολοκλήρωση της εγκατάστασης για το « kill-port ' μεταβλητή:
Μετά την εγκατάσταση, ο χρήστης μπορεί να σκοτώσει τις υπηρεσίες για τον απαιτούμενο αριθμό θύρας. Στην περίπτωσή μας, οι υπηρεσίες του αριθμού λιμένα ' 8080 ” πρόκειται να σκοτωθούν μέσω της παρακάτω εντολής:
σκοτώνω - Λιμάνι -- Λιμάνι 8080Η παρακάτω έξοδος επιβεβαιώνει ότι όλες οι υπηρεσίες για τη θύρα ' 8080 » έχουν σκοτωθεί:
Μέθοδος 2: Χρησιμοποιήστε τη μονάδα 'kill-port' χωρίς εγκατάσταση
Ο ' kill-port Η ενότητα μπορεί να χρησιμοποιηθεί χωρίς να περάσει η διαδικασία εγκατάστασης με τη χρήση ενός npx ” δρομέας πακέτων. Για παράδειγμα, το « kill-port Η μονάδα χρησιμοποιείται για να σκοτώσει δύο καθορισμένες θύρες χρησιμοποιώντας την εντολή εκτέλεσης πακέτου 'npx' που αναφέρεται παρακάτω:
npx kill - Λιμάνι 8080 9000Η παρακάτω έξοδος δείχνει ότι οι υπηρεσίες για καθορισμένες θύρες ' 9000 ' και ' 8080 » έχουν σκοτωθεί:
Συμβουλή μπόνους: Απεγκατάσταση της μονάδας 'kill-port'.
Για να απεγκαταστήσετε το ' kill-port ' module καθολικά από το σύστημα εκτελέστε την παρακάτω εντολή:
npm απεγκατάσταση kill - Λιμάνι - σολ
Λύση 3: Τερματίστε τις Υπηρεσίες Node.js στα Windows
Εάν το 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη' εξακολουθεί να υφίσταται, τότε σκοτώστε όλα τα τρέχοντα ' node.js υπηρεσίες είτε με χρήση GUI ή CLI.
Χρήση της προσέγγισης CLI
Πάτα το ' Παράθυρο κουμπί ' για να ανοίξετε τη γραμμή αναζήτησης και να εισαγάγετε το ' CMD ” μέσα στο πλαίσιο αναζήτησης, από τα αποτελέσματα που δημιουργούνται. Στη συνέχεια, επιλέξτε το ' Γραμμή εντολών ' εφαρμογή και πατήστε το ' Εκτελέστε ως διαχειριστής Κουμπί ”:
Επιλέγοντας την επιλογή, θα εμφανιστεί ένα νέο παράθυρο του Control Prompt, για να σκοτώσετε τις τρέχουσες υπηρεσίες 'node.js' που εκτελούνται στο παρασκήνιο, εκτελέστε την παρακάτω εντολή:
taskkill / φά / Κόμβος άμεσων μηνυμάτων. exeΗ παραγόμενη έξοδος δείχνει ότι οι υπηρεσίες 'node.js' έχουν τερματιστεί:
Χρήση GUI Approach
Για να σκοτώσετε τις υπηρεσίες node.js που εκτελούνται από το σύστημα, ανοίξτε το ' Διαχειριστής εργασιών ' πατώντας το ' Ctrl + Shift + Esc ” πλήκτρα αμέσως. Αφού ανοίξετε τη 'Διαχείριση εργασιών', μεταβείτε στο ' Λεπτομέριες πληκτρολογήστε, επιλέξτε το node.exe ' service, και πατήστε το ' Τέλος εργασίας Το κουμπί ” βρίσκεται στην κάτω δεξιά κατεύθυνση, όπως φαίνεται παρακάτω:
Αυτό αφορά την επίλυση του 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη' στο Node.js.
συμπέρασμα
Το 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη' εμφανίζεται όταν περισσότερες από μία υπηρεσίες προσπαθούν να χρησιμοποιήσουν μία μόνο θύρα ταυτόχρονα. Για να το επιλύσετε, ο χρήστης θα πρέπει να προσπαθήσει να χρησιμοποιήσει έναν διαφορετικό αριθμό θύρας ή να σκοτώσει τις υπηρεσίες που εκτελούνται ήδη στον καθορισμένο αριθμό θύρας χρησιμοποιώντας το ' kill-port ενότητα. Εάν το σφάλμα εξακολουθεί να μην έχει επιλυθεί, σκοτώστε όλα τα τρέχοντα ' node.js ” υπηρεσίες από τη διαχείριση εργασιών και επανεκκινήστε την εφαρμογή σας. Αυτός ο οδηγός επεξηγεί τις πιθανές λύσεις για την επίλυση του ζητήματος 'Σφάλμα: ακούστε EADDRINUSE: διεύθυνση που χρησιμοποιείται ήδη'.