Hur löser man felet 'referensfel kräver inte är definierat'?

Hur Loser Man Felet Referensfel Kraver Inte Ar Definierat



Node.js är ingenting i sig, dess existens beror på moduler och metoder som tillhandahålls av varje modul. För att arbeta med dessa moduler måste utvecklaren först installera den och sedan importera den in i den aktuella filen. För att importera moduler finns det två sätt som är specifikt kopplade till den version av JavaScript som utvecklaren nu använder eller som applikationsägaren vill bygga på. När du importerar finns det en chans att möta flera fel och det ena populära och vanligaste felet relaterat till ' behöva() ”-metoden beskrivs och löses.

Den här guiden förklarar proceduren för att lösa 'ReferenceError: require is not defined'-fel.

Hur löser jag felet 'ReferenceError: require is not defined'?

För att importera externa eller inbyggda moduler i projektet används två metoder, dessa använder ' behöva() ' metod eller ' importera ' nyckelord. De nämnda ' ReferenceError: require är inte definierat ” står inför när en användare försöker använda ” behöva() ' metoden inuti ' ES-modul ” omfattning. Det diskuterade felet visas så här över konsolen i node.js när den nedan angivna koden exekveras:









Orsakerna till uppkomsten av felet 'Lös 'ReferenceError: require is not defined' och deras motsvarande lösningar förklaras i avsnitten nedan.



Orsak 1: Typen av applikation är inställd på modul

Om din applikation visar det nämnda felet är den enklaste och långvariga lösningen modifieringen av ' package.json ' fil. Sök efter nyckel/värdeparet som har ' nyckel ' av ' typ ' och det tilldelade värdet för ' modul ”. Detta gör hela applikationens miljö modulär, vilket förhindrar användningen av gamla ' CommonJS ” moduler och metoder. Den visuella representationen av detta nyckel/värdepar ser ut så här:





'typ' : 'modul' ,

Lösning: Ta bort 'Typ'-nyckeln

Lösningen är att ta bort ' typ ”-nyckel och tilldelat värde från node.js-projektet ” package.json ' fil. Borttagningen från filen 'package.json' utnyttjar ES6-modulens omfång och gör metoden 'require() användbar. Nu, när samma kod exekveras igen kommer det inte att inträffa något fel.



Orsak 2: Att arbeta i '.mjs Fil

den ' .mjs ” är en modul JavaScript-källkodsfil. Den innehåller kod inuti modulmiljön inte i ' CommonJS ” som delar upp koden i flera filer för bättre hanterbarhet. den ' behöva() ”-metoden ligger under ” CommonJS ”. Det är därför 'kräv' -metoden blir odefinierad när den används i ' .mjs ” filtillägget och leder till förekomsten av det nämnda felet:

Lösning: Konvertera filtillägget till '.cjs'

Precis som modulär JavaScript-källkod filtillägget för ' .mjs ' är tillgänglig. Förlängningen av ' .cjs ” tillhandahålls för ” CommonJS ” moduler och egenskaper. Denna fil accepterar inte ' modul- 'paket som' importera ” men fungerar bra med ES5-versioner. I vårt fall kommer det ändrade filtillägget att lösa problemet relaterat till ' behöva() ' metod:

Alternativ tillvägagångssätt: Använd ES6-deklarationen 'import/export'

den ' behöva() ' metoden definieras och tillhandahålls av ' CommonJs ” och är acceptabelt fram till JavaScript-versionen av ES5(ECMAScript 5). Det publicerades 2009 och har nu blivit föråldrat eftersom många senaste moduler inte stöder det eller inte fungerar korrekt i ES5. Precis som ' behöva() 'metoden ersätts nu med mer optimerad och enkel' importera ” uttalanden. Arbetet för båda enheterna är detsamma men 'import' har en överkant på grund av den senaste tekniken och mer lätthet som den tillhandahåller.

För standard- eller externa moduler

I nedanstående demonstration används 'import'-satsen som ett alternativ till metoden 'require()' för att importera standard- eller tredjepartsmodulen:

importera readlineObj från 'läsrad' ;

trösta. logga ( readlineObj ) ;

Efter sammanställning av den nämnda koden, samma uppgift som måste göras av ' behöva() ”-metoden utförs och ” ReferenceError: require är inte definierat ' kommer inte att visas också:

För specialbyggda moduler

den ' importera ”-satsen används också för att “importera” specialbyggda moduler eller funktioner från andra filer som finns i samma eller olika kataloger. Funktionerna eller variablerna från andra filer exporteras med hjälp av ' exportera ' nyckelord. Besök till exempel kodavsnittet nedan där en enskild funktion och en slumpvariabel kommer att importeras från en annan fil:

app.js

konst exportVariabel = 'Denna guide tillhandahålls av Linuxhint!' ;

konst exportfunktion = ( ) => {

trösta. logga ( exportVariabel ) ;

} ;

exportera standard exportfunktion ;

exportera {

exportVariabel

} ;

Förklaringen av ovanstående kodblock är som följer:

  • Först, den slumpmässiga variabeln som heter ' exportVariabel ” definieras och pilfunktionen ” exportFunction() ” skapas som skriver ut den skapade ”exportVariable” över konsolen.
  • Nyckelorden för ' export standard ' och ' exportera ' används för att exportera ' exportFunction() ' och ' exportVariabel ”-enheter från filen.
  • När denna fil importeras blir den exporterade funktionen och variablerna tillgängliga att använda där.

index.js

'index.js' är vår sekundära fil där den exporterade funktionen och variabeln kommer att importeras och användas, den innehåller nedanstående kod:

importera exportfunktion, { exportVariabel } från './app.js' ;

exportfunktion ( ) ;

trösta. logga ( exportVariabel ) ;

I ovanstående kod, ' importera '-satsen används för att importera standard' exportFunction() ' och variabeln ' exportVariabel ' från ' app.js ' fil.

Sedan anropas båda importerade enheterna och visas över konsolen i verifieringssyfte.

Kör nu den huvudsakliga ' index.js ' fil med nedan angivna kommando:

nodindex. js

Den genererade utdata visar att importerade element fungerar korrekt utan att orsaka ' ReferenceError: require är inte definierad ' fel:

Det handlar om att lösa det angivna felet.

Slutsats

För att lösa ' ReferenceError: require är inte definierat ' fel, ta bort ' typ '-nyckel som har värdet ' modul ' från ' package.json ” eller ändra filtillägget som för närvarande fungerar till ” .cjs ”. Om du vill arbeta i ES6-modulversionen, istället för att använda ' behöva() ' metoden använd ' importera ” uttalanden närmar sig. Den här guiden har förklarat möjliga korrigeringar för att lösa ' ReferenceError: require är inte definierat 'fel' i node.js