Ako vyriešiť chybu „požiadavka nie je definovaná“ v JavaScript/Node.js

Ako Vyriesit Chybu Poziadavka Nie Je Definovana V Javascript Node Js



Počas programovania sa môžeme stretnúť s rôznymi chybami, ako sú chyby syntaxe alebo chyby pri spustení. Referenčná chyba je chyba spustenia. Chyba odkazu nastane, keď sa odkazuje na neinicializovanú premennú alebo premennú, ktorá v aktuálnom rozsahu neexistuje. Chyba „vyžadovať nie je definovaná“ je referenčná chyba, ktorá naznačuje, že existuje problém s kľúčovým slovom „vyžadovať“.

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.