Ako vyriešiť chybu „referenčná chyba vyžaduje nie je definovaná“?

Ako Vyriesit Chybu Referencna Chyba Vyzaduje Nie Je Definovana



Node.js sám o sebe nie je ničím, jeho existencia závisí od modulov a metód poskytovaných každým modulom. Ak chcete s týmito modulmi pracovať, vývojár ich musí najskôr nainštalovať a potom ich importovať do aktuálne fungujúceho súboru. Na import modulov existujú dva spôsoby, ktoré sú špecificky prepojené s verziou JavaScriptu, ktorú vývojár teraz používa alebo na ktorej chce vlastník aplikácie stavať. Pri importe existuje možnosť stretnúť sa s viacerými chybami a jednou populárnou a najbežnejšou chybou súvisiacou s „ vyžadovať() “ metóda sa popisuje a rieši.

Táto príručka vysvetľuje postup pri odstraňovaní chýb „ReferenceError: požadované nie je definované“.

Ako vyriešiť chybu „ReferenceError: požadované nie je definované“?

Na import externých alebo vstavaných modulov v projekte sa používajú dva prístupy, tieto používajú „ vyžadovať() “ metóda alebo “ importovať kľúčové slovo. Spomínané „ ReferenceError: požiadavka nie je definovaná “, keď sa používateľ pokúsi použiť „ vyžadovať() “ metóda v rámci “ ES modul ' rozsah. Diskutovaná chyba sa zobrazí takto cez konzolu v node.js, keď sa spustí nižšie uvedený kód:









Dôvody výskytu chyby „Vyriešiť chybu „ReferenceError: požadované nie je definované“ a ich zodpovedajúce riešenia sú vysvetlené v nižšie uvedených častiach.



Dôvod 1: Typ aplikácie je nastavený na Modul

Ak vaša aplikácia zobrazuje uvedenú chybu, najjednoduchším a dlhodobým riešením je úprava „ package.json “. Vyhľadajte pár kľúč/hodnota so znakom „ kľúč “z “ typu “ a priradená hodnota „ modul “. Vďaka tomu je prostredie celej aplikácie modulárne, čo zabraňuje používaniu starých „ CommonJS “moduly a metódy. Vizuálna reprezentácia tohto páru kľúč/hodnota vyzerá takto:





'typ' : 'modul' ,

Riešenie: Odstráňte kľúč „Typ“.

Riešením je odstránenie „ typu “ kľúč a priradená hodnota z projektu node.js “ package.json “. Odstránenie zo súboru „package.json“ využíva rozsah modulu ES6 a robí metódu „require() funkčnou. Teraz, keď sa rovnaký kód vykoná znova, nedôjde k žiadnej chybe.



Dôvod 2: Práca v „.mjs Súbor

' .mjs ” je súbor zdrojového kódu modulu JavaScript. Obsahuje kód v prostredí modulu, ktorý nie je v „ CommonJS ” ktorý rozdeľuje kód do viacerých súborov pre lepšiu správu. ' vyžadovať() “ metóda sa nachádza pod „ CommonJS “. Preto sa metóda „vyžadovať“ stane nedefinovanou, keď sa použije v rámci „ .mjs ” a vedie k výskytu uvedenej chyby:

Riešenie: Preveďte príponu súboru na „.cjs“

Rovnako ako modulárny zdrojový kód JavaScript, prípona súboru „ .mjs ' je k dispozícii. Rozšírenie „ .cjs “ sa poskytuje pre “ CommonJS “moduly a vlastnosti. Tento súbor neprijíma „ modulárny “balíčky ako “ importovať “, ale funguje dobre s verziami ES5. V našom prípade zmena prípony súboru vyrieši problém súvisiaci s „ vyžadovať() “ metóda:

Alternatívny prístup: Použite vyhlásenie ES6 „import/export“

' vyžadovať() “ metóda je definovaná a poskytovaná „ CommonJs “ a je prijateľný do verzie JavaScript ES5 (ECMAScript 5). Bola publikovaná v roku 2009 a teraz sa stala zastaranou, pretože mnohé najnovšie moduly ju nepodporujú alebo nefungujú správne v ES5. Rovnako ako „ vyžadovať() “ metóda sa teraz nahrádza optimalizovanejšou a jednoduchšou “ importovať ' Vyhlásenia. Fungovanie oboch entít je rovnaké, ale „import“ má hornú hranicu vďaka najnovšej technológii a jednoduchosti, ktorú poskytuje.

Pre predvolené alebo externé moduly

V nižšie uvedenej ukážke sa príkaz „import“ používa ako alternatíva k metóde „require()“ na import predvoleného modulu alebo modulu tretej strany:

importovať readlineObj od 'readline' ;

konzoly. log ( readlineObj ) ;

Po kompilácii uvedeného kódu je potrebné vykonať rovnakú úlohu, ktorú musí vykonať „ vyžadovať() “ sa vykoná metóda a „ ReferenceError: požiadavka nie je definovaná “ sa tiež nezobrazí:

Pre moduly zostavené na mieru

' importovať “ sa tiež používa na „import“ modulov alebo funkcií na mieru z iných súborov nachádzajúcich sa v rovnakých alebo rôznych adresároch. Funkcie alebo premenné z iných súborov sa exportujú pomocou „ export kľúčové slovo. Navštívte napríklad nižšie uvedený útržok kódu, v ktorom sa jedna funkcia a náhodná premenná importujú z iného súboru:

app.js

konšt exportVariable = 'Túto príručku poskytuje Linuxhint!' ;

konšt exportFunction = ( ) => {

konzoly. log ( exportVariable ) ;

} ;

export predvolená exportFunction ;

export {

exportVariable

} ;

Vysvetlenie vyššie uvedeného bloku kódu je nasledovné:

  • Najprv náhodná premenná s názvom „ exportVariable “ je definovaná a funkcia šípky “ exportFunction() ” je vytvorený, ktorý vytlačí vytvorenú „exportVariable“ cez konzolu.
  • Kľúčové slová „ exportovať predvolené “ a „ export “ sa používajú na export „ exportFunction() “ a „ exportVariable ” entity zo súboru.
  • Po importe tohto súboru sa exportovaná funkcia a premenné sprístupnia na použitie.

index.js

„index.js“ je náš sekundárny súbor, do ktorého sa importuje a používa exportovaná funkcia a premenná, obsahuje nižšie uvedený kód:

importovať exportFunction, { exportVariable } od './app.js' ;

exportFunction ( ) ;

konzoly. log ( exportVariable ) ;

Vo vyššie uvedenom kóde je „ importovať “ príkaz sa používa na importovanie predvoleného “ exportFunction() “ a premenná „ exportVariable “ z „ app.js “.

Potom sa vyvolajú obe importované entity a zobrazia sa cez konzolu na účely overenia.

Teraz vykonajte hlavné „ index.js ” súbor pomocou nižšie uvedeného príkazu:

index uzla. js

Vygenerovaný výstup ukazuje, že importované prvky fungujú správne bez toho, aby spôsobili „ ReferenceError: požiadavka nie je definovaná ' chyba:

To je všetko o vyriešení špecifikovanej chyby.

Záver

Na vyriešenie problému „ ReferenceError: požiadavka nie je definovaná “, odstráňte “ typu “kľúč s hodnotou “ modul “ z „ package.json “ alebo zmeňte aktuálne fungujúcu príponu súboru na „ .cjs “. V prípade, že chcete pracovať v modulárnej verzii ES6, potom namiesto použitia „ vyžadovať() “ použite metódu “ importovať “výpovede. Táto príručka vysvetlila možné opravy na vyriešenie problému „ ReferenceError: požiadavka nie je definovaná „chyba“ v node.js