Како да решите грешку „захтев није дефинисан“ у ЈаваСцрипт/Ноде.јс

Kako Da Resite Gresku Zahtev Nije Definisan U Javascript Node Js



Током програмирања, можемо наићи на различите грешке као што су синтаксичке грешке или грешке у току рада. Референтна грешка је грешка током извођења. Референтна грешка се јавља када се референцира неиницијализована променљива или променљива која не постоји у садашњем опсегу. Грешка „захтева није дефинисана“ је референтна грешка која указује да постоји проблем са кључном речи „рекуире“.

Овај чланак детаљно говори о разлозима због којих долази до ове грешке и начинима на које можемо да је исправимо.

Како решити грешку „захтев није дефинисан“ у ЈаваСцрипт/Ноде.јс?

Референтна грешка „рекуире ис нот фоунд“ се дешава када се функција рекуире() пронађе у ЈаваСцрипт датотеци која је требало да се изврши у веб претраживачу уместо у окружењу Ноде.јс.







Шта је захтева() функција?

рекуире() функција има глобални опсег и дата је помоћу Ноде.јс. Учитава и покреће модуле у апликацији Ноде.јс. Многи претраживачи не помажу Ноде.јс тако да функција рекуире() није доступна у њима.



Када се ова грешка дешава?

Ова грешка се обично јавља када се ЈаваСцрипт користи у оба прегледача заједно са Ноде.јс. Грешка се може појавити на три начина:



  • Када се функција рекуире() користи у окружењу претраживача.
  • Када се функција рекуире() користи у Ноде.јс и датотеци пацкаге.јсон, тип је подешен на „модуле“
  • Када се у Ноде.јс користи функција рекуире(), датотеке имају екстензију .мјс.

Коришћење синтаксе цонст “ миФиле = рекуире(‘./ми-филе’) ” у окружењу заснованом на вебу ће приказати грешку која изгледа овако:





Хајде да разговарамо о различитим решењима за решавање ове грешке.



Случај 1: Грешка у окружењу претраживача

Функција рекуире() ради посебно у Ноде.јс. Већина претраживача је компатибилна са Ноде.јс тако да не подржавају функцију рекуире(). ЕС6 модул за увоз модула за извоз решава грешку „РеференцеЕррор рекуире ис нот Дефинед“. Ево примера кода који показује како се то може урадити:

ДОЦТИПЕ хтмл >

< тело >





< тип скрипте = 'модул' срц = 'индек.јс' > скрипта >

< тип скрипте = 'модул' срц = 'филе.јс' > скрипта >

тело >

хтмл >

Индек.јс се прво учитава тако да се његове функционалности могу користити у филе.јс.

индек.јс фајл

индек.јс дефинише производ функције и променљиве к и и:

извозна функција производа ( а, б ) {

повратак а * б ;

}

извоз конст = 10 ;

извоз конст и = 'ТЕЈЛОР'

филе.јс

Функционалности из датотеке индек.јс се могу користити у другој јс датотеци која се зове филе.јс. Филе.јс изгледа овако:

увоз { производ, к, и } из './индек.јс' ;

конзола. Пријава ( производ ( 10 , 5 ) ) ; // ће приказати 50

конзола. Пријава ( Икс ) ; // ће приказати 10

конзола. Пријава ( и ) ; // ће приказати 'ТАИЛОР'

Излаз

Следећи излаз приказује како се грешка „захтева није дефинисана“ у окружењу претраживача може уклонити коришћењем ЕС6 модула за извоз увоза:

Случај 2: Грешка током рада у Ноде.јс

У датотеци пацкаге.јсон, подешавање својства типа са модулом вредности добија ову грешку. То се такође може десити ако се функција рекуире() користи у датотеци са екстензијом .мјс.

Ова грешка се може уклонити када уклоните својство типа постављено на модул и било која датотека са екстензијом .мјс се преименује у .јс.

//пацкаге.јсон

{

// уклоните својство типа постављено на модул да бисте користили рекуире()

'тип' : 'модул' ,

}

индек.јс фајл

Датотека индек.јс дефинише функцију „производ“ и променљиве к и и са опсегом променљиве. Ево како ће изгледати датотека индек.јс:

функционални производ ( а, б ) {

повратак а * б ;

}

глобално. Икс = 13 ;

глобално. и = 'брзи' ;

модул. извоза = {

производ,

} ;

филе.јс

Узима производ функције из ЈС датотеке индек.јс користећи кључну реч рекуире(). Датотека филе.јс ће изгледати овако:

конст { производ } = захтевају ( './индек.јс' ) ;

конзола. Пријава ( производ ( 10 , 9 ) ) ; // ће приказати 90

конзола. Пријава ( Икс ) ; // ће приказати 13

конзола. Пријава ( и ) ; // ће приказати 'свифт'

Излаз

Излаз приказује како се грешка „Рекуире ис нот фоунд“ може решити уклањањем својства типа постављеног на модул из датотеке пацкаге.јсон:

Ствари које треба запамтити

  • Синтакса ЕС6 модула за увоз модула захтева да будете специфични у вези са екстензијом датотеке модула. ЈаваСцрипт треба да зна тип датотеке за његову правилну обраду.
  • ЕС6 модул се не може истовремено користити са функцијом рекуире().

Закључак

Коришћење синтаксе ЕС6 модула у претраживачу решава проблем „захтев није дефинисан“ или се у супротном исечак кода мора покренути у Ноде.јс. Грешка се дешава када се у претраживачу користи функција рекуире(). У овом чланку се говори о томе како се проблем „захтев није дефинисан“ може решити на примеру.