Ovaj vodič objašnjava postupak rješavanja pogreške 'ReferenceError: require is not defined'.
- Kako riješiti pogrešku 'ReferenceError: require is not defined'?
- Razlog 1: Vrsta aplikacije postavljena je na Modul
- Rješenje: Uklonite tipku 'Type'.
- Razlog 2: Rad u “.mjs ” Datoteka
- Rješenje: Pretvorite ekstenziju datoteke u '.cjs'
- Alternativni pristup: Koristite ES6 izjavu 'uvoz/izvoz'
Kako riješiti pogrešku 'ReferenceError: require is not defined'?
Za uvoz vanjskih ili ugrađenih modula u projekt koriste se dva pristupa, a to je korištenje ' zahtijevati () ' metoda ili ' uvoz ” ključna riječ. Spomenuti “ ReferenceError: zahtjev nije definiran ” kada korisnik pokuša upotrijebiti „ zahtijevati () ' metoda unutar ' ES modul ” opseg. Pogreška o kojoj se raspravlja pojavljuje se ovako preko konzole u node.js kada se izvrši dolje navedeni kod:
Razlozi za pojavu pogreške 'Riješi 'ReferenceError: zahtjev nije definiran'' i njihova odgovarajuća rješenja objašnjeni su u odjeljcima u nastavku.
Razlog 1: Vrsta aplikacije je postavljena na Module
Ako vaša aplikacija prikazuje navedenu grešku, najlakše i dugoročno rješenje je izmjena “ paket.json ' datoteka. Potražite par ključ/vrijednost koji ima ' ključ ” od “ tip ” i dodijeljena vrijednost „ modul ”. To čini okolinu cijele aplikacije modularnom, što sprječava korištenje starih “ CommonJS ” moduli i metode. Vizualni prikaz ovog para ključ/vrijednost izgleda ovako:
'tip' : 'modul' ,
Rješenje: Uklonite tipku 'Type'.
Rješenje je uklanjanje ' tip ” ključ i dodijeljena vrijednost iz projekta node.js “ paket.json ' datoteka. Uklanjanje iz datoteke 'package.json' iskorištava opseg ES6 modula i čini metodu 'require() funkcionalnom. Sada, kada se isti kod ponovno izvrši, neće doći do greške.
Razlog 2: Rad u “.mjs ” Datoteka
' .mjs ” je datoteka izvornog koda JavaScript modula. Sadrži kod unutar okruženja modula ne u ' CommonJS ” koji dijeli kod u više datoteka radi bolje upravljivosti. ' zahtijevati () ' metoda nalazi se pod ' CommonJS ”. Zato će metoda 'require' postati nedefinirana kada se koristi unutar ' .mjs ” datotečni nastavak i dovodi do pojave navedene pogreške:
Rješenje: Pretvorite ekstenziju datoteke u '.cjs'
Baš poput modularnog JavaScript izvornog koda, ekstenzija datoteke ' .mjs ' dostupan. Proširenje ' .cjs ' predviđeno je za ' CommonJS ” moduli i svojstva. Ova datoteka ne prihvaća ' modularni ” paketi poput “ uvoz ”, ali dobro radi s verzijama ES5. U našem slučaju, promjena ekstenzije datoteke riješit će problem vezan uz ' zahtijevati () ” metoda:
Alternativni pristup: Koristite ES6 izjavu 'uvoz/izvoz'
' zahtijevati () ” definirana je i osigurana metodom „ CommonJs ” i prihvatljiv je do JavaScript verzije ES5 (ECMAScript 5). Objavljen je 2009. godine i sada je zastario jer ga mnogi najnoviji moduli ne podržavaju ili ne rade ispravno u ES5. Baš kao i ' zahtijevati () 'metoda se sada zamjenjuje optimiziranijom i jednostavnijom' uvoz ” izjave. Rad oba entiteta je isti, ali 'uvoz' ima prednost zbog najnovije tehnologije i veće jednostavnosti koju ona pruža.
Za zadane ili vanjske module
U donjoj demonstraciji, izjava 'import' koristi se kao alternativa metodi 'require()' za uvoz zadanog modula ili modula treće strane:
uvoz readlineObj iz 'readline' ;konzola. log ( readlineObj ) ;
Nakon kompilacije navedenog koda, isti zadatak koji treba obaviti “ zahtijevati () ” izvodi se metoda i „ ReferenceError: zahtjev nije definiran ” također se neće pojaviti:
Za prilagođene module
' uvoz ” izjava se također koristi za “uvoz” prilagođenih modula ili funkcija iz drugih datoteka koje se nalaze u istom ili različitim direktorijima. Funkcije ili varijable iz drugih datoteka izvoze se pomoću ' izvoz ” ključna riječ. Na primjer, posjetite donji isječak koda u kojem će se jedna funkcija i slučajna varijabla uvesti iz druge datoteke:
app.js
konst izvozna varijabla = 'Ovaj vodič je osigurao Linuxhint!' ;konst exportFunction = ( ) => {
konzola. log ( izvozna varijabla ) ;
} ;
izvoz zadano exportFunction ;
izvoz {
izvozna varijabla
} ;
Objašnjenje gornjeg bloka koda je sljedeće:
- Prvo, slučajna varijabla pod nazivom ' izvozna varijabla ” je definirana i funkcija strelice “ exportFunction() ” kreira se koja ispisuje stvorenu “exportVariable” preko konzole.
- Ključne riječi za ' izvoz zadanih ' i ' izvoz ' koriste se za izvoz ' exportFunction() ' i ' izvozna varijabla ” entiteta iz datoteke.
- Kada se ova datoteka uveze, izvezene funkcije i varijable tamo postaju dostupne za korištenje.
index.js
'Index.js' je naša sekundarna datoteka u koju će se izvezena funkcija i varijabla uvesti i koristiti, sadrži dolje naveden kod:
uvoz funkcija izvoza, { izvozna varijabla } iz './app.js' ;exportFunction ( ) ;
konzola. log ( izvozna varijabla ) ;
U gornjem kodu, ' uvoz ' izjava se koristi za uvoz zadane ' exportFunction() ” i varijabla “ izvozna varijabla ' od ' app.js ' datoteka.
Zatim se oba uvezena entiteta pozivaju i prikazuju preko konzole u svrhu provjere.
Sada izvršite glavni ' index.js ” pomoću dolje navedene naredbe:
indeks čvora. jsGenerirani izlaz pokazuje da uvezeni elementi rade ispravno bez uzroka ' ReferenceError: zahtjev nije definiran ” pogreška:
To je sve o rješavanju navedene pogreške.
Zaključak
Za rješavanje ' ReferenceError: zahtjev nije definiran ', uklonite ' tip ' ključ koji ima vrijednost ' modul ' od ' paket.json ” ili promijenite trenutno radnu ekstenziju datoteke u „ .cjs ”. U slučaju da želite raditi u modularnoj verziji ES6, umjesto korištenja ' zahtijevati () ' metoda koristite ' uvoz ” pristup izjavama. Ovaj vodič je objasnio moguće popravke za rješavanje ' ReferenceError: zahtjev nije definiran ”greška” u node.js