Kako razrešiti napako »referenceerror require is not defined«?

Kako Razresiti Napako Referenceerror Require Is Not Defined



Node.js ni nič sam po sebi, njegov obstoj je odvisen od modulov in metod, ki jih ponuja vsak modul. Za delo s temi moduli jih mora razvijalec najprej namestiti in nato uvoziti znotraj trenutno delujoče datoteke. Za uvoz modulov obstajata dva načina, ki sta posebej povezana z različico JavaScripta, ki jo razvijalec zdaj uporablja ali na kateri želi lastnik aplikacije graditi. Med uvažanjem obstaja možnost, da se soočite z več napakami in eno priljubljeno in najpogostejšo napako, povezano z ' zahtevaj() ” se opisuje in rešuje.

V tem priročniku je razložen postopek za razreševanje napak »ReferenceError: require is not defined«.

Kako razrešiti napako »ReferenceError: require is not defined«?

Za uvoz zunanjih ali vgrajenih modulov v projekt se uporabljata dva pristopa, ti uporabljajo » zahtevaj() ' metoda ali ' uvoz ” ključna beseda. Omenjeni “ ReferenceError: zahteva ni definirana « se pojavi, ko uporabnik poskuša uporabiti » zahtevaj() ' metoda znotraj ' ES modul ' Obseg. Obravnavana napaka se preko konzole v node.js pojavi takole, ko se izvede spodaj navedena koda:









Razlogi za pojav napake »Resolve »ReferenceError: require is not defined« in njihove ustrezne rešitve so razloženi v spodnjih razdelkih.



1. razlog: vrsta aplikacije je nastavljena na modul

Če vaša aplikacija prikazuje omenjeno napako, je najlažja in dolgotrajna rešitev sprememba » package.json ' mapa. Poiščite par ključ/vrednost, ki ima ' ključ ” od “ vrsta « in dodeljena vrednost » modul ”. Zaradi tega je okolje celotne aplikacije modularno, kar preprečuje uporabo starih “ CommonJS ” moduli in metode. Vizualna predstavitev tega para ključ/vrednost je videti takole:





'tip' : 'modul' ,

Rešitev: Odstranite tipko »Vrsta«.

Rešitev je odstranitev ' vrsta ' ključ in dodeljena vrednost iz projekta node.js ' package.json ' mapa. Odstranitev iz datoteke »package.json« izkorišča obseg modula ES6 in omogoča uporabo metode »require(). Zdaj, ko se ista koda znova izvede, ne bo prišlo do napake.



2. razlog: Delo v ».mjs mapa

' .mjs ” je datoteka z izvorno kodo JavaScript modula. Vsebuje kodo znotraj okolja modula in ne v » CommonJS ”, ki kodo razdeli na več datotek za boljše upravljanje. ' zahtevaj() ' metoda leži pod ' CommonJS ”. Zato bo metoda »zahtevaj« postala nedefinirana, če se uporablja znotraj » .mjs ” in vodi do pojava omenjene napake:

Rešitev: Pretvorite pripono datoteke v ».cjs«

Tako kot modularna izvorna koda JavaScript, datotečna pripona » .mjs ' Na voljo. Razširitev ' .cjs « je na voljo za » CommonJS ” moduli in lastnosti. Ta datoteka ne sprejema » modularno 'paketi kot' uvoz ”, vendar dobro deluje z različicami ES5. V našem primeru bo spreminjanje pripone datoteke rešilo težavo, povezano z » zahtevaj() ” metoda:

Alternativni pristop: Uporabite izjavo ES6 'uvoz/izvoz'

' zahtevaj() ' je definirana in zagotovljena z ' CommonJs ” in je sprejemljivo do različice JavaScript ES5 (ECMAScript 5). Objavljen je bil leta 2009 in je zdaj zastarel, saj ga številni najnovejši moduli ne podpirajo ali ne delujejo pravilno v ES5. Tako kot ' zahtevaj() »metoda je zdaj nadomeščena z bolj optimizirano in enostavno« uvoz ” izjave. Delovanje obeh entitet je enako, vendar ima 'uvoz' zgornjo mejo zaradi najnovejše tehnologije in več enostavnosti, ki jo omogoča.

Za privzete ali zunanje module

V spodnji predstavitvi se stavek »import« uporablja kot alternativa metodi »require()« za uvoz privzetega modula ali modula tretje osebe:

uvoz readlineObj od 'readline' ;

konzola. dnevnik ( readlineObj ) ;

Po prevajanju omenjene kode je ista naloga, ki jo mora opraviti » zahtevaj() ' se izvaja metoda in ' ReferenceError: zahteva ni definirana « se prav tako ne bo prikazal:

Za module, izdelane po meri

' uvoz ” se uporablja tudi za “uvoz” modulov ali funkcij za izdelavo po meri iz drugih datotek, ki se nahajajo v istem ali različnih imenikih. Funkcije ali spremenljivke iz drugih datotek se izvozijo z uporabo » izvoz ” ključna beseda. Na primer, obiščite spodnji delček kode, v katerem bosta ena funkcija in naključna spremenljivka uvoženi iz druge datoteke:

app.js

konst exportVariable = 'Ta vodnik je zagotovil Linuxhint!' ;

konst exportFunction = ( ) => {

konzola. dnevnik ( exportVariable ) ;

} ;

izvoz privzeto exportFunction ;

izvoz {

exportVariable

} ;

Razlaga zgornjega kodnega bloka je naslednja:

  • Najprej naključna spremenljivka z imenom ' exportVariable « je definirana in funkcija puščice « exportFunction() « se ustvari, ki natisne ustvarjeno »exportVariable« prek konzole.
  • Ključne besede » privzeti izvoz « in » izvoz « se uporabljajo za izvoz » exportFunction() « in » exportVariable ” entitete iz datoteke.
  • Ko je ta datoteka uvožena, postanejo izvožene funkcije in spremenljivke tam na voljo za uporabo.

index.js

»Index.js« je naša sekundarna datoteka, v katero bosta uvoženi in uporabljeni izvožena funkcija in spremenljivka, vsebuje spodaj navedeno kodo:

uvoz izvozna funkcija, { exportVariable } od './app.js' ;

exportFunction ( ) ;

konzola. dnevnik ( exportVariable ) ;

V zgornji kodi je » uvoz stavek se uporablja za uvoz privzetega exportFunction() ' in spremenljivka ' exportVariable ' Iz ' app.js ' mapa.

Nato sta obe uvoženi entiteti priklicani in prikazani na konzoli za namene preverjanja.

Zdaj izvedite glavno ' index.js ” z uporabo spodnjega ukaza:

indeks vozlišča. js

Ustvarjeni izhod kaže, da uvoženi elementi delujejo pravilno, ne da bi povzročili ' ReferenceError: zahteva ni definirana ” napaka:

To je vse o odpravljanju navedene napake.

Zaključek

Za rešitev ' ReferenceError: zahteva ni definirana ' napaka, odstranite ' vrsta ' ključ z vrednostjo ' modul ' Iz ' package.json « ali spremenite trenutno delujočo končnico datoteke v » .cjs ”. Če želite delati v modularni različici ES6, namesto uporabe » zahtevaj() ' uporabite metodo ' uvoz ” pristop izjav. V tem priročniku so razloženi možni popravki za odpravo » ReferenceError: zahteva ni definirana »napaka« v node.js