Tento článek podrobně popisuje důvody, proč k této chybě dochází, a způsoby, jak ji můžeme opravit.
Jak vyřešit chybu „požadavek není definován“ v JavaScript/Node.js?
Referenční chyba „require is not found“ nastane, když je funkce require() nalezena v souboru JavaScript, který měl být spuštěn ve webovém prohlížeči namísto prostředí Node.js.
Co je to funkce require()?
Funkce require() má globální rozsah a je dána Node.js. Načítá a spouští moduly v aplikaci Node.js. Mnoho prohlížečů nepodporuje Node.js, takže funkce require() v nich není k dispozici.
Kdy se tato chyba stane?
K této chybě obvykle dochází, když se JavaScript používá v obou prohlížečích spolu s Node.js. K chybě může dojít třemi způsoby:
- Když se v prostředí prohlížeče používá funkce require().
- Když je v Node.js a souboru package.json použita funkce require(), typ je nastaven na „module“
- Když je v Node.js použita funkce require(), mají soubory příponu .mjs.
Použití syntaxe const ' myFile = required(‘./my-file’) ” ve webovém prostředí vyvolá chybu, která vypadá takto:
Pojďme diskutovat o různých řešeních k vyřešení této chyby.
Případ 1: Chyba v prostředí prohlížeče
Funkce require() funguje konkrétně v Node.js. Většina prohlížečů je kompatibilní s Node.js, takže nepodporují funkci require(). Modul exportu importu modulu ES6 řeší chybu „ReferenceError required is notdefined“. Zde je příklad kódu, který ukazuje, jak to lze provést:
DOCTYPE html >< tělo >
< typ skriptu = 'modul' src = 'index.js' > skript >
< typ skriptu = 'modul' src = 'file.js' > skript >
tělo >
html >
Index.js se načte jako první, aby bylo možné využít jeho funkce v souboru file.js.
soubor index.js
Index.js definuje produkt funkce a proměnné x a y:
produkt exportní funkce ( a, b ) {vrátit se A * b ;
}
vývozní konst = 10 ;
vývozní konst a = 'TAYLOR'
soubor.js
Funkce ze souboru index.js lze použít v jiném souboru js s názvem file.js. File.js vypadá takto:
import { produkt, x, y } z './index.js' ;řídicí panel. log ( produkt ( 10 , 5 ) ) ; // zobrazí 50
řídicí panel. log ( X ) ; // zobrazí 10
řídicí panel. log ( a ) ; // zobrazí 'TAYLOR'
Výstup
Následující výstup zobrazuje, jak lze chybu „požadavek není definován“ v prostředí prohlížeče odstranit pomocí modulu ES6 import export:
Případ 2: Chyba při práci v Node.js
V souboru package.json při nastavení vlastnosti type s modulem value dojde k této chybě. Může k tomu také dojít, pokud je v souboru s příponou .mjs použita funkce require().
Tuto chybu lze odstranit, když odeberete vlastnost type nastavenou na modul a jakýkoli soubor s příponou .mjs se přejmenuje na .js.
//package.json{
// odebere vlastnost type nastavenou na modul, který má používat require()
'typ' : 'modul' ,
}
soubor index.js
Soubor index.js definuje funkci „produkt“ a proměnné x a y s rozsahem proměnné. Takto bude vypadat soubor index.js:
funkční produkt ( a, b ) {vrátit se A * b ;
}
globální. X = 13 ;
globální. a = 'rychlý' ;
modul. exportů = {
produkt,
} ;
soubor.js
Přebírá produkt funkce ze souboru JS index.js pomocí klíčového slova require(). Soubor file.js bude vypadat takto:
konst { produkt } = vyžadovat ( './index.js' ) ;řídicí panel. log ( produkt ( 10 , 9 ) ) ; // zobrazí 90
řídicí panel. log ( X ) ; // zobrazí 13
řídicí panel. log ( a ) ; // zobrazí 'swift'
Výstup
Výstup zobrazuje, jak lze vyřešit chybu „Require is not found“ odstraněním vlastnosti typu set to module ze souboru package.json:
Věci k zapamatování
- Syntaxe modulu ES6 pro import modulu vyžaduje konkrétní příponu souboru modulu. JavaScript by měl znát typ souboru pro jeho správné zpracování.
- Modul ES6 nelze použít současně s funkcí require().
Závěr
Použití syntaxe modulu ES6 v prohlížeči řeší problém „požadavek není definován“, jinak musí být fragment kódu spuštěn v Node.js. K chybě dojde, když se v prohlížeči použije funkce require(). Tento článek popisuje, jak lze problém „požadavek není definován“ vyřešit pomocí příkladu.