Αυτός ο οδηγός εξηγεί τη διαδικασία για την επίλυση σφαλμάτων 'ReferenceError: η απαίτηση δεν ορίζεται'.
- Πώς να επιλύσετε το σφάλμα 'ReferenceError: η απαίτηση δεν ορίζεται';
- Λόγος 1: Ο τύπος εφαρμογής έχει οριστεί σε ενότητα
- Λύση: Αφαιρέστε το πλήκτρο «Τύπος».
- Λόγος 2: Εργασία στο “.mjs ” Αρχείο
- Λύση: Μετατρέψτε την επέκταση αρχείου σε '.cjs'
- Εναλλακτική προσέγγιση: Χρησιμοποιήστε τη δήλωση ES6 'εισαγωγή/εξαγωγή'
Πώς να επιλύσετε το σφάλμα 'ReferenceError: η απαίτηση δεν ορίζεται';
Για την εισαγωγή εξωτερικών ή ενσωματωμένων μονάδων στο έργο χρησιμοποιούνται δύο προσεγγίσεις, αυτές χρησιμοποιούν το ' απαιτώ() 'μέθοδος ή ' εισαγωγή » λέξη-κλειδί. Το αναφερόμενο « Σφάλμα αναφοράς: η απαίτηση δεν έχει οριστεί ' αντιμετωπίζεται όταν ένας χρήστης προσπαθεί να χρησιμοποιήσει το ' απαιτώ() 'μέθοδος μέσα στο ' Μονάδα ES ' πεδίο εφαρμογής. Το σφάλμα που συζητήθηκε εμφανίζεται ως εξής στην κονσόλα στο node.js όταν εκτελείται ο παρακάτω κώδικας:
Οι λόγοι για την εμφάνιση του σφάλματος 'Επίλυση 'Σφάλμα αναφοράς: η απαίτηση δεν ορίζεται' και οι αντίστοιχες λύσεις εξηγούνται στις παρακάτω ενότητες.
Λόγος 1: Ο τύπος της εφαρμογής έχει οριστεί σε ενότητα
Εάν η εφαρμογή σας εμφανίζει το αναφερόμενο σφάλμα, η πιο εύκολη και μακροχρόνια λύση είναι η τροποποίηση του ' πακέτο.json ' αρχείο. Αναζήτηση για το ζεύγος κλειδιού/τιμής που έχει το « κλειδί 'του ' τύπος ' και την εκχωρημένη τιμή του ' μονάδα μέτρησης '. Αυτό κάνει το περιβάλλον ολόκληρης της εφαρμογής αρθρωτό, το οποίο αποτρέπει τη χρήση παλιών ' CommonJS Ενότητες και μέθοδοι. Η οπτική αναπαράσταση αυτού του ζεύγους κλειδιού/τιμής εμφανίζεται ως εξής:
'τύπος' : 'μονάδα μέτρησης' ,
Λύση: Αφαιρέστε το πλήκτρο «Τύπος».
Η λύση είναι η κατάργηση του « τύπος ' κλειδί και εκχωρημένη τιμή από το έργο node.js ' πακέτο.json ' αρχείο. Η κατάργηση από το αρχείο 'package.json' εκμεταλλεύεται το εύρος της λειτουργικής μονάδας ES6 και καθιστά εφαρμόσιμη τη μέθοδο 'require(). Τώρα, όταν εκτελεστεί ξανά ο ίδιος κώδικας, δεν θα εμφανιστεί σφάλμα.
Λόγος 2: Εργασία στο “.mjs ” Αρχείο
Ο ' .mjs ” είναι ένα αρχείο πηγαίου κώδικα JavaScript Module. Περιέχει κώδικα μέσα στο περιβάλλον της μονάδας όχι σε ' CommonJS ” που χωρίζει τον κώδικα σε πολλά αρχεία για καλύτερη διαχείριση. Ο ' απαιτώ() 'η μέθοδος βρίσκεται κάτω από το ' CommonJS '. Αυτός είναι ο λόγος για τον οποίο η μέθοδος 'απαιτείται' θα γίνει απροσδιόριστη όταν χρησιμοποιείται μέσα στο ' .mjs ” επέκταση αρχείου και οδηγεί στην εμφάνιση του αναφερόμενου σφάλματος:
Λύση: Μετατρέψτε την επέκταση αρχείου σε '.cjs'
Ακριβώς όπως ο αρθρωτός πηγαίος κώδικας JavaScript, η επέκταση αρχείου του ' .mjs ' είναι διαθέσιμο. Η επέκταση του « .cjs 'Προβλέπεται για ' CommonJS ' ενότητες και ιδιότητες. Αυτό το αρχείο δεν δέχεται ' αρθρωτό “πακέτα όπως “ εισαγωγή αλλά λειτουργεί καλά με τις εκδόσεις ES5. Στην περίπτωσή μας, η αλλαγή της επέκτασης αρχείου θα επιλύσει το πρόβλημα που σχετίζεται με το ' απαιτώ() μέθοδος:
Εναλλακτική προσέγγιση: Χρησιμοποιήστε τη δήλωση ES6 'εισαγωγή/εξαγωγή'
Ο ' απαιτώ() ' η μέθοδος ορίζεται και παρέχεται από το ' CommonJs ” και είναι αποδεκτό μέχρι την έκδοση JavaScript του ES5 (ECMAScript 5). Δημοσιεύτηκε το 2009 και τώρα έχει καταστεί απαρχαιωμένο καθώς πολλές πιο πρόσφατες μονάδες δεν το υποστηρίζουν ή δεν λειτουργούν σωστά στο ES5. Ακριβώς όπως το ' απαιτώ() 'Η μέθοδος αντικαθίσταται τώρα με πιο βελτιστοποιημένη και εύκολη' εισαγωγή », δηλώσεις. Η λειτουργία και των δύο οντοτήτων είναι η ίδια, αλλά η 'εισαγωγή' έχει ένα ανώτερο πλεονέκτημα λόγω της τελευταίας τεχνολογίας και της μεγαλύτερης ευκολίας που παρέχει.
Για προεπιλεγμένες ή εξωτερικές μονάδες
Στην παρακάτω επίδειξη, η δήλωση 'import' χρησιμοποιείται ως εναλλακτική στη μέθοδο 'require()' για την εισαγωγή της προεπιλεγμένης λειτουργικής μονάδας ή της λειτουργικής μονάδας τρίτου κατασκευαστή:
εισαγωγή readlineObj από 'γραμμή ανάγνωσης' ;κονσόλα. κούτσουρο ( readlineObj ) ;
Μετά τη σύνταξη του αναφερόμενου κώδικα, η ίδια εργασία που πρέπει να γίνει από το « απαιτώ() ' εκτελείται η μέθοδος και η ' Σφάλμα αναφοράς: η απαίτηση δεν έχει οριστεί Το ” δεν θα εμφανιστεί επίσης:
Για προσαρμοσμένες ενότητες
Ο ' εισαγωγή Η δήλωση χρησιμοποιείται επίσης για την 'εισαγωγή' των προσαρμοσμένων λειτουργιών ή λειτουργιών από άλλα αρχεία που βρίσκονται στον ίδιο ή διαφορετικούς καταλόγους. Οι συναρτήσεις ή οι μεταβλητές από άλλα αρχεία εξάγονται χρησιμοποιώντας το ' εξαγωγή » λέξη-κλειδί. Για παράδειγμα, επισκεφτείτε το παρακάτω απόσπασμα κώδικα στο οποίο μια μεμονωμένη συνάρτηση και μια τυχαία μεταβλητή πρόκειται να εισαχθούν από άλλο αρχείο:
app.js
συνθ exportΜεταβλητή = 'Αυτός ο Οδηγός παρέχεται από το Linuxhint!' ;συνθ Λειτουργία εξαγωγής = ( ) => {
κονσόλα. κούτσουρο ( exportΜεταβλητή ) ;
} ;
εξαγωγή Προκαθορισμένο Λειτουργία εξαγωγής ;
εξαγωγή {
exportΜεταβλητή
} ;
Η εξήγηση του παραπάνω μπλοκ κώδικα είναι η εξής:
- Πρώτα, η τυχαία μεταβλητή με το όνομα ' exportΜεταβλητή ' ορίζεται και η συνάρτηση βέλους ' ExportFunction() ' δημιουργείται που εκτυπώνει το δημιουργημένο 'exportVariable' πάνω από την κονσόλα.
- Οι λέξεις-κλειδιά του « προεπιλογή εξαγωγής ' και ' εξαγωγή ' χρησιμοποιούνται για την εξαγωγή του ' ExportFunction() ' και ' exportΜεταβλητή ” οντότητες από το αρχείο.
- Όταν αυτό το αρχείο εισάγεται, η εξαγόμενη συνάρτηση και οι μεταβλητές γίνονται διαθέσιμες για χρήση εκεί.
index.js
Το 'index.js' είναι το δευτερεύον αρχείο μας στο οποίο πρόκειται να εισαχθούν και να χρησιμοποιηθούν η εξαγόμενη συνάρτηση και η μεταβλητή, περιέχει τον παρακάτω κώδικα:
εισαγωγή Λειτουργία εξαγωγής, { exportΜεταβλητή } από './app.js' ;Λειτουργία εξαγωγής ( ) ;
κονσόλα. κούτσουρο ( exportΜεταβλητή ) ;
Στον παραπάνω κώδικα, το « εισαγωγή 'Η δήλωση χρησιμοποιείται για την εισαγωγή της προεπιλογής' ExportFunction() 'και η μεταβλητή' exportΜεταβλητή ' από το ' app.js ' αρχείο.
Στη συνέχεια, καλούνται και οι δύο εισαγόμενες οντότητες και εμφανίζονται στην κονσόλα για λόγους επαλήθευσης.
Τώρα, εκτελέστε το κύριο ' index.js ' αρχείο χρησιμοποιώντας την παρακάτω εντολή:
ευρετήριο κόμβου. jsΗ παραγόμενη έξοδος δείχνει ότι τα εισαγόμενα στοιχεία λειτουργούν σωστά χωρίς να προκαλούν το ' Σφάλμα αναφοράς: η απαίτηση δεν έχει οριστεί ' λάθος:
Αυτό αφορά την επίλυση του καθορισμένου σφάλματος.
συμπέρασμα
Για την επίλυση του « Σφάλμα αναφοράς: η απαίτηση δεν έχει οριστεί ' σφάλμα, αφαιρέστε το ' τύπος 'κλειδί με τιμή ' μονάδα μέτρησης ' από το ' πακέτο.json ' ή τροποποιήστε την τρέχουσα επέκταση αρχείου σε ' .cjs '. Σε περίπτωση που επιθυμείτε να εργαστείτε στην αρθρωτή έκδοση ES6, αντί να χρησιμοποιήσετε το ' απαιτώ() ' μέθοδος χρησιμοποιήστε την ' εισαγωγή 'προσέγγιση δηλώσεων. Αυτός ο οδηγός έχει εξηγήσει τις πιθανές επιδιορθώσεις για την επίλυση του ' Σφάλμα αναφοράς: η απαίτηση δεν έχει οριστεί 'σφάλμα' στο node.js