Jak vyřešit chybu „referenční chyba vyžaduje není definována“?

Jak Vyresit Chybu Referencni Chyba Vyzaduje Neni Definovana



Node.js není nic samo o sobě, jeho existence závisí na modulech a metodách, které každý modul poskytuje. Aby bylo možné s těmito moduly pracovat, musí je vývojář nejprve nainstalovat a poté importovat do aktuálně fungujícího souboru. Za účelem importu modulů existují dva způsoby, které jsou specificky propojeny s verzí JavaScriptu, kterou vývojář nyní používá nebo na které chce vlastník aplikace stavět. Při importu existuje možnost setkat se s více chybami a jednou populární a nejčastější chybou související s „ vyžadovat() “ metoda se popisuje a řeší.

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“?

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. js

Vygenerovaný 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