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«?
- 1. razlog: vrsta aplikacije je nastavljena na modul
- Rešitev: Odstranite tipko »Vrsta«.
- 2. razlog: Delo v ».mjs ” mapa
- Rešitev: Pretvorite pripono datoteke v ».cjs«
- Alternativni pristop: Uporabite izjavo ES6 'uvoz/izvoz'
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. jsUstvarjeni 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