Τρόπος επίλυσης του σφάλματος 'η απαίτηση δεν έχει οριστεί' στο JavaScript/Node.js

Tropos Epilyses Tou Sphalmatos E Apaitese Den Echei Oristei Sto Javascript Node Js



Κατά τη διάρκεια της διαδρομής προγραμματισμού, ενδέχεται να συναντήσουμε διαφορετικά σφάλματα όπως σφάλματα σύνταξης ή σφάλματα χρόνου εκτέλεσης. Ένα σφάλμα αναφοράς είναι ένα σφάλμα χρόνου εκτέλεσης. Παρουσιάζεται σφάλμα αναφοράς όταν αναφέρεται μια μη αρχικοποιημένη μεταβλητή ή μια μεταβλητή που δεν υπάρχει στο παρόν πεδίο εφαρμογής. Το σφάλμα 'η απαίτηση δεν ορίζεται' είναι ένα σφάλμα αναφοράς που υποδεικνύει ότι υπάρχει πρόβλημα με τη λέξη-κλειδί 'απαιτείται'.

Αυτό το άρθρο περιγράφει λεπτομερώς τους λόγους που παρουσιάζεται αυτό το σφάλμα και τους τρόπους με τους οποίους μπορούμε να το διορθώσουμε.

Πώς να επιλύσετε το σφάλμα 'η απαίτηση δεν έχει οριστεί' στο JavaScript/Node.js;

Το σφάλμα αναφοράς 'η απαίτηση δεν βρέθηκε' συμβαίνει όταν η συνάρτηση request() βρίσκεται στο αρχείο JavaScript που υποτίθεται ότι θα εκτελούνταν στο πρόγραμμα περιήγησης Ιστού αντί για το περιβάλλον Node.js.







Τι είναι η συνάρτηση require();

Η λειτουργία require() έχει καθολικό εύρος και δίνεται από το Node.js. Φορτώνει και εκτελεί ενότητες στην εφαρμογή Node.js. Πολλά προγράμματα περιήγησης δεν βοηθούν το Node.js, επομένως η λειτουργία require() δεν είναι διαθέσιμη σε αυτά.



Πότε συμβαίνει αυτό το σφάλμα;

Αυτό το σφάλμα παρουσιάζεται συνήθως όταν χρησιμοποιείται JavaScript και στα δύο προγράμματα περιήγησης μαζί με το Node.js. Το σφάλμα μπορεί να προκύψει με τρεις τρόπους:



  • Όταν η συνάρτηση require() χρησιμοποιείται στο περιβάλλον του προγράμματος περιήγησης.
  • Όταν η συνάρτηση require() χρησιμοποιείται στο Node.js και στο αρχείο package.json, ο τύπος ορίζεται σε 'module'
  • Όταν χρησιμοποιείται η συνάρτηση require() στο Node.js, τα αρχεία έχουν επέκταση .mjs.

Χρησιμοποιώντας τη σύνταξη const ' myFile = απαιτείται ('./my-file') ' σε ένα διαδικτυακό περιβάλλον θα εμφανίσει ένα σφάλμα που μοιάζει με αυτό:





Ας συζητήσουμε διαφορετικές λύσεις για την επίλυση αυτού του σφάλματος.



Περίπτωση 1: Σφάλμα στο περιβάλλον του προγράμματος περιήγησης

Η συνάρτηση require() λειτουργεί ειδικά στο Node.js. Τα περισσότερα προγράμματα περιήγησης είναι συμβατά με το Node.js, επομένως δεν υποστηρίζουν τη λειτουργία require(). Η μονάδα εξαγωγής εισαγωγής μονάδας ES6 επιλύει το σφάλμα 'ReferenceError require is not defined'. Ακολουθεί ένα παράδειγμα κώδικα που δείχνει πώς μπορεί να γίνει:

DOCTYPE html >

< σώμα >





< τύπο σεναρίου = 'μονάδα μέτρησης' src = 'index.js' γραφή >

< τύπο σεναρίου = 'μονάδα μέτρησης' src = 'file.js' γραφή >

σώμα >

html >

Το Index.js φορτώνεται πρώτα έτσι ώστε οι λειτουργίες του να μπορούν να χρησιμοποιηθούν στο file.js.

αρχείο index.js

Το index.js ορίζει ένα γινόμενο συνάρτησης και τις μεταβλητές x και y:

προϊόν λειτουργίας εξαγωγής ( α, β ) {

ΕΠΙΣΤΡΟΦΗ ένα * σι ;

}

εξαγωγή συνθ = 10 ;

εξαγωγή συνθ και = 'TAYLOR'

file.js

Οι λειτουργίες από το αρχείο index.js μπορούν να χρησιμοποιηθούν στο άλλο αρχείο js που ονομάζεται file.js. Το File.js μοιάζει με:

εισαγωγή { γινόμενο, x, y } από './index.js' ;

κονσόλα. κούτσουρο ( προϊόν ( 10 , 5 ) ) ; // θα εμφανίσει 50

κονσόλα. κούτσουρο ( Χ ) ; // θα εμφανίσει 10

κονσόλα. κούτσουρο ( και ) ; // θα εμφανίσει 'TAYLOR'

Παραγωγή

Η ακόλουθη έξοδος εμφανίζει πώς μπορεί να αφαιρεθεί το σφάλμα 'require is not defined' σε περιβάλλον προγράμματος περιήγησης χρησιμοποιώντας τη μονάδα εξαγωγής εισαγωγής ES6:

Περίπτωση 2: Σφάλμα κατά την εργασία στο Node.js

Στο αρχείο package.json, η ρύθμιση της ιδιότητας τύπου με τη λειτουργική μονάδα τιμής λαμβάνει αυτό το σφάλμα. Μπορεί επίσης να συμβεί εάν η συνάρτηση require() χρησιμοποιείται στο αρχείο με επέκταση .mjs.

Αυτό το σφάλμα μπορεί να αφαιρεθεί όταν καταργήσετε την ιδιότητα τύπου που έχει οριστεί στη λειτουργική μονάδα και οποιοδήποτε αρχείο με επέκταση .mjs μετονομαστεί σε .js.

//package.json

{

// καταργήστε την ιδιότητα τύπου που έχει οριστεί στη λειτουργική μονάδα για χρήση της require()

'τύπος' : 'μονάδα μέτρησης' ,

}

αρχείο index.js

Το αρχείο index.js ορίζει μια συνάρτηση 'προϊόν' και τις μεταβλητές x και y με το εύρος της μεταβλητής. Δείτε πώς θα μοιάζει το αρχείο index.js:

προϊόν λειτουργίας ( α, β ) {

ΕΠΙΣΤΡΟΦΗ ένα * σι ;

}

παγκόσμια. Χ = 13 ;

παγκόσμια. και = 'ταχύς' ;

μονάδα μέτρησης. εξαγωγές = {

προϊόν,

} ;

file.js

Παίρνει το προϊόν συνάρτησης από το αρχείο JS index.js χρησιμοποιώντας τη λέξη-κλειδί require(). Το αρχείο file.js θα μοιάζει με αυτό:

συνθ { προϊόν } = απαιτώ ( './index.js' ) ;

κονσόλα. κούτσουρο ( προϊόν ( 10 , 9 ) ) ; // θα εμφανίσει 90

κονσόλα. κούτσουρο ( Χ ) ; // θα εμφανίσει το 13

κονσόλα. κούτσουρο ( και ) ; // θα εμφανίσει 'swift'

Παραγωγή

Η έξοδος εμφανίζει πώς μπορεί να επιλυθεί το σφάλμα 'Η απαίτηση δεν βρέθηκε' αφαιρώντας την ιδιότητα του τύπου που έχει οριστεί σε module από το αρχείο package.json:

Πράγματα που πρέπει να θυμάστε

  • Η σύνταξη της μονάδας ES6 για την εισαγωγή μιας λειτουργικής μονάδας απαιτεί να είστε συγκεκριμένοι σχετικά με την επέκταση του αρχείου της λειτουργικής μονάδας. Το JavaScript θα πρέπει να γνωρίζει τον τύπο αρχείου για τη σωστή επεξεργασία του.
  • Η μονάδα ES6 δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα με τη λειτουργία require().

συμπέρασμα

Η χρήση της σύνταξης της μονάδας ES6 στο πρόγραμμα περιήγησης επιλύει το πρόβλημα 'δεν έχει οριστεί η απαίτηση' ή διαφορετικά το απόσπασμα κώδικα πρέπει να εκτελεστεί στο Node.js. Το σφάλμα συμβαίνει όταν χρησιμοποιείται η συνάρτηση request() σε ένα πρόγραμμα περιήγησης. Αυτό το άρθρο εξέτασε πώς μπορεί να επιλυθεί το ζήτημα 'δεν ορίζεται η απαίτηση' με ένα παράδειγμα.