Hvordan løser jeg 'referansefeil krever er ikke definert'-feil?

Hvordan Loser Jeg Referansefeil Krever Er Ikke Definert Feil



Node.js er ingenting i seg selv, dens eksistens avhenger av moduler og metoder gitt av hver modul. For å jobbe med disse modulene må utvikleren først installere den og deretter importere den inn i filen som fungerer. For å importere moduler er det to måter som er spesifikt knyttet til den versjonen av JavaScript utvikleren nå bruker eller som applikasjonseieren ønsker å bygge på. Under import er det en sjanse til å møte flere feil og den ene populære og vanligste feilen relatert til ' krever() ”-metoden blir beskrevet og løst.

Denne veiledningen forklarer prosedyren for å løse 'ReferenceError: require is not defined'-feil.

Hvordan løser jeg 'ReferenceError: require is not defined'-feil?

For å importere eksterne eller innebygde moduler i prosjektet brukes to tilnærminger, disse bruker ' krever() ' metode eller ' import ' nøkkelord. Den nevnte ' ReferenceError: require er ikke definert ' står overfor når en bruker prøver å bruke ' krever() '-metoden i ' ES-modul ' omfang. Den omtalte feilen vises slik over konsollen i node.js når koden nedenfor blir utført:









Årsakene til forekomsten av feilen 'Løs 'ReferenceError: require is not defined' og deres tilsvarende løsninger er forklart i avsnittene nedenfor.



Årsak 1: Applikasjonstypen er satt til modul

Hvis applikasjonen din viser den nevnte feilen, er den enkleste og langvarige løsningen endringen av ' package.json ' fil. Søk etter nøkkel/verdi-paret som har ' nøkkel ' av ' type ' og den tilordnede verdien av ' modul '. Dette gjør miljøet til hele applikasjonen modulært, noe som forhindrer bruk av gamle ' CommonJS ” moduler og metoder. Den visuelle representasjonen av dette nøkkel/verdi-paret ser slik ut:





'type' : 'modul' ,

Løsning: Fjern 'Type'-nøkkelen

Løsningen er å fjerne ' type ' nøkkel og tildelt verdi fra node.js-prosjektet ' package.json ' fil. Fjerningen fra 'package.json'-filen utnytter ES6-modulomfanget og gjør 'require()-metoden brukbar. Nå, når den samme koden kjøres igjen, vil det ikke være noen feil.



Årsak 2: Arbeid i '.mjs Fil

« .mjs ” er en modul JavaScript-kildekodefil. Den inneholder kode inne i modulmiljøet ikke i ' CommonJS ” som deler koden i flere filer for bedre administrasjon. « krever() '-metoden ligger under ' CommonJS '. Det er grunnen til at 'require'-metoden blir udefinert når den brukes i ' .mjs ' filtypen og fører til forekomsten av den nevnte feilen:

Løsning: Konverter filutvidelsen til '.cjs'

Akkurat som modulær JavaScript-kildekode, filtypen til ' .mjs ' er tilgjengelig. Utvidelsen av ' .cjs ' er gitt for ' CommonJS ” moduler og egenskaper. Denne filen godtar ikke ' modulært 'pakker som' import ” men fungerer bra med ES5-versjoner. I vårt tilfelle vil den endrede filtypen løse problemet knyttet til ' krever() ' metode:

Alternativ tilnærming: Bruk ES6-erklæringen 'import/eksport'

« krever() ' metoden er definert og gitt av ' CommonJs ” og er akseptabel til JavaScript-versjonen av ES5 (ECMAScript 5). Den ble publisert i 2009 og har nå blitt foreldet ettersom mange siste moduler ikke støtter den eller ikke fungerer som den skal i ES5. Akkurat som ' krever() 'metoden erstattes nå med mer optimalisert og enkel' import ' uttalelser. Arbeidet til begge enhetene er det samme, men 'import' har en øvre kant på grunn av den nyeste teknologien og mer enkelhet levert av den.

For standard eller eksterne moduler

I demonstrasjonen nedenfor blir 'import'-setningen brukt som et alternativ til 'require()'-metoden for å importere standard- eller tredjepartsmodulen:

import readlineObj fra 'leselinje' ;

konsoll. Logg ( readlineObj ) ;

Etter kompilering av den nevnte koden, den samme oppgaven som må gjøres av ' krever() '-metoden utføres og ' ReferenceError: require er ikke definert ' vil ikke vises også:

For spesialbygde moduler

« import '-setningen brukes også til å 'importere' spesialbygde moduler eller funksjoner fra andre filer som ligger i samme eller forskjellige kataloger. Funksjonene eller variablene fra andre filer eksporteres ved å bruke ' eksport ' nøkkelord. Gå for eksempel til kodebiten nedenfor der en enkelt funksjon og en tilfeldig variabel skal importeres fra en annen fil:

app.js

konst eksportvariabel = 'Denne veiledningen er levert av Linuxhint!' ;

konst eksportfunksjon = ( ) => {

konsoll. Logg ( eksportvariabel ) ;

} ;

eksport misligholde eksportfunksjon ;

eksport {

eksportvariabel

} ;

Forklaringen av kodeblokken ovenfor er som følger:

  • Først den tilfeldige variabelen kalt ' eksportvariabel ' er definert og pilfunksjonen ' eksportFunction() ' opprettes som skriver ut den opprettede 'exportVariable' over konsollen.
  • Nøkkelordene til ' eksport standard ' og ' eksport ' brukes til å eksportere ' eksportFunction() ' og ' eksportvariabel ”-enheter fra filen.
  • Når denne filen er importert blir den eksporterte funksjonen og variablene tilgjengelige for bruk der.

index.js

'index.js' er vår sekundære fil der den eksporterte funksjonen og variabelen skal importeres og brukes, den inneholder koden nedenfor:

import eksportfunksjon, { eksportvariabel } fra './app.js' ;

eksportfunksjon ( ) ;

konsoll. Logg ( eksportvariabel ) ;

I koden ovenfor, ' import '-setning brukes til å importere standard' eksportFunction() ' og variabelen ' eksportvariabel ' fra ' app.js ' fil.

Deretter blir begge importerte enhetene påkalt og vist over konsollen for verifiseringsformål.

Nå, utfør hoved-' index.js '-fil ved å bruke kommandoen nedenfor:

nodeindeks. js

Den genererte utdata viser at importerte elementer fungerer som de skal uten å forårsake ' ReferenceError: require er ikke definert ' feil:

Det handler om å løse den angitte feilen.

Konklusjon

For å løse ' ReferenceError: require er ikke definert ' feil, fjern ' type '-tast som har verdien av ' modul ' fra ' package.json ' eller endre filtypen som fungerer for øyeblikket til ' .cjs '. Hvis du ønsker å jobbe i ES6-modulversjonen, så i stedet for å bruke ' krever() '-metoden bruk ' import ” uttalelser tilnærming. Denne veiledningen har forklart mulige reparasjoner for å løse ' ReferenceError: require er ikke definert 'feil' i node.js