Tato příručka vysvětluje postup pro řešení chyb „ReferenceError: required is notdefined“.
- Jak vyřešit chybu „ReferenceError: požadavek není definován“?
- Důvod 1: Typ aplikace je nastaven na Modul
- Řešení: Odstraňte klíč „Typ“.
- Důvod 2: Práce v „.mjs “ Soubor
- Řešení: Převeďte příponu souboru na „.cjs“
- Alternativní přístup: Použijte prohlášení ES6 „import/export“
Jak vyřešit chybu „ReferenceError: požadavek není definován“?
Pro import externích nebo vestavěných modulů v projektu se používají dva přístupy, tyto používají „ vyžadovat() “ metoda nebo “ import “. Zmíněný „ ReferenceError: požadavek není definován “ se objeví, když se uživatel pokusí použít „ vyžadovat() “ metoda uvnitř “ ES modul ' rozsah. Diskutovaná chyba se zobrazí takto přes konzolu v node.js, když se spustí níže uvedený kód:
Důvody pro výskyt chyby „Vyřešit „ReferenceError: required is notdefined“ a jejich odpovídající řešení jsou vysvětlena v níže uvedených částech.
Důvod 1: Typ aplikace je nastaven na Modul
Pokud vaše aplikace zobrazuje zmíněnou chybu, nejjednodušším a dlouhodobým řešením je úprava „ package.json “. Vyhledejte pár klíč/hodnota s „ klíč “ z “ typ “ a přiřazená hodnota „ modul “. Díky tomu je prostředí celé aplikace modulární, což zabraňuje používání starých „ CommonJS “moduly a metody. Vizuální reprezentace tohoto páru klíč/hodnota vypadá takto:
'typ' : 'modul' ,
Řešení: Odstraňte klíč „Typ“.
Řešením je odstranění „ typ “ klíč a přiřazená hodnota z projektu node.js “ package.json “. Odstranění ze souboru „package.json“ využívá rozsah modulu ES6 a činí metodu „require() funkční. Nyní, když je stejný kód spuštěn znovu, nedojde k žádné chybě.
Důvod 2: Práce v „.mjs “ Soubor
' .mjs ” je soubor zdrojového kódu modulu JavaScript. Obsahuje kód uvnitř prostředí modulu, který není v „ CommonJS ” který rozděluje kód do více souborů pro lepší správu. ' vyžadovat() “ metoda spadá pod “ CommonJS “. To je důvod, proč bude metoda „vyžadovat“ při použití uvnitř „ .mjs ” a vede k výskytu zmíněné chyby:
Řešení: Převeďte příponu souboru na „.cjs“
Stejně jako modulární zdrojový kód JavaScriptu přípona souboru „ .mjs ' je k dispozici. Rozšíření „ .cjs “ je poskytován pro “ CommonJS “moduly a vlastnosti. Tento soubor nepřijímá „ modulární “balíčky jako “ import “, ale funguje dobře s verzemi ES5. V našem případě změna přípony souboru vyřeší problém související s „ vyžadovat() “ metoda:
Alternativní přístup: Použijte prohlášení ES6 „import/export“
' vyžadovat() “ metoda je definována a poskytována „ CommonJs “ a je přijatelná až do verze JavaScriptu ES5 (ECMAScript 5). Byl publikován v roce 2009 a nyní je zastaralý, protože mnoho nejnovějších modulů jej nepodporuje nebo nepracuje správně v ES5. Stejně jako „ vyžadovat() “ metoda je nyní nahrazena optimalizovanější a jednodušší “ import “ prohlášení. Fungování obou entit je stejné, ale „import“ má díky nejnovější technologii a větší jednoduchosti, kterou poskytuje, navrch.
Pro výchozí nebo externí moduly
V níže uvedené ukázce je příkaz „import“ použit jako alternativa k metodě „require()“ k importu výchozího modulu nebo modulu třetí strany:
import readlineObj z 'readline' ;řídicí panel. log ( readlineObj ) ;
Po kompilaci uvedeného kódu je třeba provést stejný úkol, který musí provést „ vyžadovat() je provedena metoda a ReferenceError: požadavek není definován “ se také nezobrazí:
Pro vlastní moduly
' import “ se také používá k „importu“ modulů nebo funkcí na zakázku z jiných souborů umístěných ve stejných nebo různých adresářích. Funkce nebo proměnné z jiných souborů se exportují pomocí „ vývozní klíčové slovo. Navštivte například níže uvedený fragment kódu, ve kterém bude jedna funkce a náhodná proměnná importována z jiného souboru:
app.js
konst exportVariable = 'Tuto příručku poskytuje Linuxhint!' ;konst exportFunction = ( ) => {
řídicí panel. log ( exportVariable ) ;
} ;
vývozní výchozí exportFunction ;
vývozní {
exportVariable
} ;
Vysvětlení výše uvedeného bloku kódu je následující:
- Nejprve náhodná proměnná s názvem „ exportVariable “ je definována a funkce šipky “ exportFunction() ” je vytvořen, který vytiskne vytvořenou „exportVariable“ přes konzolu.
- Klíčová slova „ exportovat výchozí ' a ' vývozní “ se používají k exportu “ exportFunction() ' a ' exportVariable ” entity ze souboru.
- Když je tento soubor importován, exportovaná funkce a proměnné jsou dostupné pro použití v tomto souboru.
index.js
„index.js“ je náš sekundární soubor, do kterého bude exportovaná funkce a proměnná importována a použita, obsahuje níže uvedený kód:
import exportFunction, { exportVariable } z './app.js' ;exportFunction ( ) ;
řídicí panel. log ( exportVariable ) ;
Ve výše uvedeném kódu je „ import “ příkaz se používá k importu výchozího “ exportFunction() “ a proměnná „ exportVariable “ z „ app.js “.
Poté jsou obě importované entity vyvolány a zobrazeny přes konzolu pro účely ověření.
Nyní proveďte hlavní „ index.js ” soubor pomocí níže uvedeného příkazu:
index uzlu. jsVygenerovaný výstup ukazuje, že importované prvky fungují správně, aniž by způsobily „ ReferenceError: požadavek není definován 'chyba:
To je vše o vyřešení zadané chyby.
Závěr
K vyřešení problému „ ReferenceError: požadavek není definován Chyba “, odstraňte “ typ “klíč s hodnotou “ modul “ z „ package.json “ nebo změňte aktuálně fungující příponu souboru na „ .cjs “. V případě, že chcete pracovat v modulární verzi ES6, pak místo použití „ vyžadovat() “ metodu použijte “ import “přistupují k prohlášením. Tato příručka vysvětlila možné opravy k vyřešení problému „ ReferenceError: požadavek není definován „chyba“ v node.js