Tento článok podrobne popisuje dôvody výskytu tejto chyby a spôsoby, ako ju môžeme opraviť.
Ako vyriešiť chybu „požiadavka nie je definovaná“ v JavaScript/Node.js?
Referenčná chyba „require is not found“ nastane, keď sa funkcia require() nájde v súbore JavaScript, ktorý sa mal spustiť vo webovom prehliadači namiesto prostredia Node.js.
Čo je funkcia require()?
Funkcia require() má globálny rozsah a je daná Node.js. Načítava a spúšťa moduly v aplikácii Node.js. Mnoho prehliadačov nepodporuje Node.js, takže funkcia require() v nich nie je dostupná.
Kedy sa táto chyba stane?
Táto chyba sa zvyčajne vyskytuje, keď sa JavaScript používa v oboch prehliadačoch spolu s Node.js. Chyba sa môže vyskytnúť tromi spôsobmi:
- Keď sa v prostredí prehliadača používa funkcia require().
- Keď sa v Node.js a súbore package.json použije funkcia require(), typ je nastavený na „module“
- Keď sa v Node.js použije funkcia require(), súbory majú príponu .mjs.
Použitie syntaxe const “ myFile = required('./my-file') ” vo webovom prostredí vyvolá chybu, ktorá vyzerá takto:
Poďme diskutovať o rôznych riešeniach na vyriešenie tejto chyby.
Prípad 1: Chyba v prostredí prehliadača
Funkcia require() funguje špecificky v Node.js. Väčšina prehliadačov je kompatibilná s Node.js, takže nepodporujú funkciu require(). Modul exportu importu modulu ES6 rieši chybu „ReferenceError required nie je definovaná“. Tu je príklad kódu, ktorý ukazuje, ako to možno urobiť:
DOCTYPE html >< telo >
< typ skriptu = 'modul' src = 'index.js' > skript >
< typ skriptu = 'modul' src = 'file.js' > skript >
telo >
html >
Index.js sa načíta ako prvý, aby sa jeho funkcie dali využiť v súbore.js.
súbor index.js
Index.js definuje produkt funkcie a premenné x a y:
produkt exportnej funkcie ( a, b ) {vrátiť a * b ;
}
export konšt = 10 ;
export konšt a = 'TAYLOR'
súbor.js
Funkcionality zo súboru index.js možno použiť v inom súbore js s názvom file.js. File.js vyzerá takto:
importovať { produkt, x, y } od './index.js' ;konzoly. log ( produkt ( 10 , 5 ) ) ; // zobrazí 50
konzoly. log ( X ) ; // zobrazí 10
konzoly. log ( a ) ; // zobrazí 'TAYLOR'
Výkon
Nasledujúci výstup zobrazuje, ako možno chybu „požiadavka nie je definovaná“ v prostredí prehliadača odstrániť pomocou modulu ES6 import export:
Prípad 2: Chyba pri práci v Node.js
V súbore package.json sa pri nastavení vlastnosti type s modulom hodnoty zobrazí táto chyba. Môže sa to stať aj vtedy, ak je v súbore s príponou .mjs použitá funkcia require().
Túto chybu je možné odstrániť, keď odstránite vlastnosť typu nastavenú na modul a akýkoľvek súbor s príponou .mjs sa premenuje na .js.
//package.json{
// odstráňte vlastnosť type nastavenú na modul, ktorý sa má použiť require()
'typ' : 'modul' ,
}
súbor index.js
Súbor index.js definuje funkciu „produkt“ a premenné x a y s rozsahom premennej. Súbor index.js bude vyzerať takto:
funkčný produkt ( a, b ) {vrátiť a * b ;
}
globálne. X = 13 ;
globálne. a = 'rýchly' ;
modul. exportov = {
produkt,
} ;
súbor.js
Preberá produkt funkcie zo súboru JS index.js pomocou kľúčového slova require(). Súbor file.js bude vyzerať takto:
konšt { produkt } = vyžadovať ( './index.js' ) ;konzoly. log ( produkt ( 10 , 9 ) ) ; // zobrazí 90
konzoly. log ( X ) ; // zobrazí 13
konzoly. log ( a ) ; // zobrazí 'swift'
Výkon
Výstup zobrazuje, ako možno vyriešiť chybu „Vyžadovať sa nenájde“ odstránením vlastnosti typu set to module zo súboru package.json:
Veci na zapamätanie
- Syntax modulu ES6 na import modulu vyžaduje konkrétnu príponu súboru modulu. JavaScript by mal poznať typ súboru pre jeho správne spracovanie.
- Modul ES6 nie je možné použiť súčasne s funkciou require().
Záver
Použitie syntaxe modulu ES6 v prehliadači rieši problém „požiadavka nie je definovaná“, inak musí byť útržok kódu spustený v Node.js. Chyba nastane, keď sa v prehliadači použije funkcia require(). Tento článok pojednáva o tom, ako možno problém „požiadavka nie je definovaná“ vyriešiť pomocou príkladu.