Denne vejledning forklarer proceduren til at løse 'ReferenceError: require is not defined'-fejl.
- Sådan løser du fejlen 'ReferenceError: require is not defined'?
- Årsag 1: Ansøgningstype er indstillet til modul
- Løsning: Fjern 'Type'-nøglen
- Årsag 2: Arbejder i '.mjs ” Fil
- Løsning: Konverter filtypenavnet til '.cjs'
- Alternativ tilgang: Brug ES6-erklæringen 'import/eksport'
Sådan løser du fejlen 'ReferenceError: require is not defined'?
For at importere eksterne eller indbyggede moduler i projektet bruges to tilgange, disse bruger ' kræve() ' metode eller ' importere ” nøgleord. Det nævnte ' ReferenceError: require er ikke defineret ' står over for, når en bruger forsøger at bruge ' kræve() '-metoden inde i ' ES modul ' omfang. Den diskuterede fejl vises således over konsollen i node.js, når nedenstående kode bliver eksekveret:
Årsagerne til forekomsten af fejlen 'Løs 'ReferenceError: require is not defined' og deres tilsvarende løsninger er forklaret i nedenstående afsnit.
Årsag 1: Applikationstypen er indstillet til modul
Hvis din applikation viser den nævnte fejl, er den nemmeste og langvarige løsning ændringen af ' package.json ' fil. Søg efter nøgle/værdi-parret med ' nøgle ' af ' type ' og den tildelte værdi af ' modul ”. Dette gør miljøet i hele applikationen modulært, hvilket forhindrer brugen af gamle ' CommonJS ” moduler og metoder. Den visuelle repræsentation af dette nøgle/værdi-par ser således ud:
'type' : 'modul' ,
Løsning: Fjern 'Type'-nøglen
Løsningen er fjernelse af ' type ' nøgle og tildelt værdi fra node.js-projektet ' package.json ' fil. Fjernelsen fra filen 'package.json' udnytter ES6-modulets omfang og gør 'require()-metoden brugbar. Nu, når den samme kode udføres igen, vil der ikke være nogen fejl.
Årsag 2: Arbejder i '.mjs ” Fil
Det ' .mjs ” er en modul JavaScript-kildekodefil. Den indeholder kode inde i modulmiljøet ikke i ' CommonJS ” som opdeler koden i flere filer for bedre håndtering. Det ' kræve() ”-metoden ligger under ” CommonJS ”. Det er derfor, 'kræver'-metoden bliver udefineret, når den bruges i ' .mjs ” filtypenavn og fører til forekomsten af den nævnte fejl:
Løsning: Konverter filtypenavnet til '.cjs'
Ligesom modulær JavaScript-kildekode filtypenavnet ' .mjs ' er tilgængelig. Udvidelsen af ' .cjs ' er fastsat for ' CommonJS ” moduler og egenskaber. Denne fil accepterer ikke ' modulopbygget 'pakker som' importere ” men fungerer godt med ES5-versioner. I vores tilfælde vil den skiftende filtype løse problemet relateret til ' kræve() ” metode:
Alternativ tilgang: Brug ES6-erklæringen 'import/eksport'
Det ' kræve() ' metoden er defineret og leveret af ' CommonJs ” og er acceptabel indtil JavaScript-versionen af ES5(ECMAScript 5). Det blev udgivet i 2009 og er nu blevet forældet, da mange nyeste moduler ikke understøtter det eller ikke fungerer korrekt i ES5. Ligesom ' kræve() ”-metoden bliver nu erstattet med mere optimeret og nem” importere ” udsagn. Arbejdet for begge enheder er det samme, men 'import' har en overkant på grund af den nyeste teknologi og mere lethed, som den giver.
Til standard- eller eksterne moduler
I nedenstående demonstration bruges 'import'-sætningen som et alternativ til 'require()'-metoden til at importere standard- eller tredjepartsmodulet:
importere readlineObj fra 'læselinje' ;konsol. log ( readlineObj ) ;
Efter kompilering af den nævnte kode, den samme opgave, som skal udføres af ' kræve() '-metoden udføres, og ' ReferenceError: require er ikke defineret ' vises ikke så godt:
Til specialbyggede moduler
Det ' importere ”-sætning bruges også til at “importere” specialbyggede moduler eller funktioner fra andre filer, der ligger i samme eller forskellige mapper. Funktionerne eller variablerne fra andre filer eksporteres ved hjælp af ' eksport ” nøgleord. Besøg for eksempel nedenstående kodestykke, hvor en enkelt funktion og en tilfældig variabel vil blive importeret fra en anden fil:
app.js
konst eksportvariabel = 'Denne vejledning er leveret af Linuxhint!' ;konst eksportfunktion = ( ) => {
konsol. log ( eksportvariabel ) ;
} ;
eksport Standard eksportfunktion ;
eksport {
eksportvariabel
} ;
Forklaringen af ovenstående kodeblok er som følger:
- Først den tilfældige variabel med navnet ' eksportvariabel ” er defineret og pilefunktionen ” exportFunction() ” oprettes, der udskriver den oprettede “exportVariable” over konsollen.
- Nøgleordene for ' eksport standard ' og ' eksport ' bruges til at eksportere ' exportFunction() ' og ' eksportvariabel ”-enheder fra filen.
- Når denne fil importeres, bliver den eksporterede funktion og variabler tilgængelige til brug der.
index.js
'index.js' er vores sekundære fil, hvori den eksporterede funktion og variabel skal importeres og bruges, den indeholder nedenstående kode:
importere eksportfunktion, { eksportvariabel } fra './app.js' ;eksportfunktion ( ) ;
konsol. log ( eksportvariabel ) ;
I ovenstående kode er ' importere '-sætning bruges til at importere standard' exportFunction() ' og variablen ' eksportvariabel ' fra ' app.js ' fil.
Derefter kaldes begge importerede enheder og vises over konsollen til verifikationsformål.
Udfør nu den vigtigste ' index.js ' fil ved hjælp af nedenstående kommando:
node indeks. jsDet genererede output viser, at importerede elementer fungerer korrekt uden at forårsage ' ReferenceError: require er ikke defineret ' fejl:
Det handler om at løse den angivne fejl.
Konklusion
For at løse ' ReferenceError: require er ikke defineret ' fejl, skal du fjerne ' type '-tast med værdien ' modul ' fra ' package.json ' eller rediger den aktuelt fungerende filtypenavn til ' .cjs '. Hvis du ønsker at arbejde i ES6 modulær version, så i stedet for at bruge ' kræve() '-metoden brug ' importere ” statements tilgang. Denne vejledning har forklaret de mulige rettelser til at løse ' ReferenceError: require er ikke defineret 'fejl' i node.js