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é“?
- Dôvod 1: Typ aplikácie je nastavený na Modul
- Riešenie: Odstráňte kľúč „Typ“.
- Dôvod 2: Práca v „.mjs “ Súbor
- Riešenie: Preveďte príponu súboru na „.cjs“
- Alternatívny prístup: Použite vyhlásenie ES6 „import/export“
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. jsVygenerovaný 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