Hvordan løses 'referencefejl kræver er ikke defineret' fejl?

Hvordan Loses Referencefejl Kraever Er Ikke Defineret Fejl



Node.js er intet i sig selv, dets eksistens afhænger af moduler og metoder leveret af hvert modul. For at arbejde med disse moduler skal udvikleren først installere det og derefter importere det i den aktuelt fungerende fil. For at importere moduler er der to måder, der er specifikt forbundet med den version af JavaScript, som udvikleren nu bruger, eller som applikationsejeren ønsker at bygge på. Under import er der en chance for at stå over for flere fejl og den ene populære og mest almindelige fejl relateret til ' kræve() ” metode bliver beskrevet og løst.

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'?

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. js

Det 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