Jak vyřešit chybu „požadavek není definován“ v JavaScript/Node.js

Jak Vyresit Chybu Pozadavek Neni Definovan V Javascript Node Js



Během programování se můžeme setkat s různými chybami, jako jsou chyby syntaxe nebo chyby za běhu. Referenční chyba je chyba za běhu. Pokud byl odkazován na neinicializovanou proměnnou nebo na proměnnou, která v daném oboru neexistuje, dojde k chybě odkazu. Chyba „požadavek není definován“ je referenční chyba, která naznačuje, že existuje problém s klíčovým slovem „vyžadovat“.

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.