Како решити грешку „референтна грешка захтева није дефинисана“?

Kako Resiti Gresku Referentna Greska Zahteva Nije Definisana



Ноде.јс није ништа сам по себи, његово постојање зависи од модула и метода које обезбеђује сваки модул. Да би радио са овим модулима, програмер мора прво да га инсталира, а затим да га увезе у тренутно радну датотеку. Да бисте увезли модуле, постоје два начина која су посебно повезана са верзијом ЈаваСцрипт-а коју програмер сада користи или на којој власник апликације жели да гради. Приликом увоза постоји шанса да се суочите са више грешака и једном популарном и најчешћом грешком која се односи на „ захтевају() ” метода се описује и решава.

Овај водич објашњава процедуру за решавање грешака „РеференцеЕррор: Захтев није дефинисан“.

Како да решите грешку „РеференцеЕррор: Захтев није дефинисан“?

За увоз екстерних или уграђених модула у пројекат користе се два приступа, који користе „ захтевају() ” метод или “ увоз ” кључна реч. Поменути „ РеференцеЕррор: Захтев није дефинисан ” се суочава када корисник покуша да користи „ захтевају() ” метод унутар „ ЕС модул ' Обим. Грешка о којој се расправља се појављује овако преко конзоле у ​​ноде.јс када се изврши доле наведени код:









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



Разлог 1: Тип апликације је подешен на Модул

Ако ваша апликација приказује поменуту грешку, најлакше и дуготрајније решење је измена „ пацкаге.јсон ” фајл. Потражите пар кључ/вредност који има „ кључ ” од “ тип ” и додељена вредност „ модул ”. Ово чини окружење целе апликације модуларним, што спречава коришћење старих „ ЦоммонЈС ” модули и методе. Визуелни приказ овог пара кључ/вредност изгледа овако:





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

Решење: Уклоните кључ „Тип“.

Решење је уклањање „ тип ” кључ и додељена вредност из пројекта ноде.јс “ пацкаге.јсон ” фајл. Уклањање из датотеке „пацкаге.јсон” користи опсег ЕС6 модула и чини метод „рекуире() функционалним. Сада, када се исти код поново изврши, неће бити грешке.



Разлог 2: Рад у „.мјс Филе

.мјс ” је датотека изворног кода ЈаваСцрипт модула. Садржи код унутар окружења модула, а не у „ ЦоммонЈС ” који дели код у више датотека ради бољег управљања. „ захтевају() ” метода се налази испод „ ЦоммонЈС ”. Зато ће метода „рекуире“ постати недефинисана када се користи унутар „ .мјс ” екстензија датотеке и доводи до појаве поменуте грешке:

Решење: Конвертујте екстензију датотеке у „.цјс“

Баш као модуларни ЈаваСцрипт изворни код, екстензија датотеке „ .мјс ' је доступан. Продужетак „ .цјс ” је предвиђено за „ ЦоммонЈС ” модули и својства. Ова датотека не прихвата „ модуларни ” пакети попут „ увоз ” али добро функционише са ЕС5 верзијама. У нашем случају, промена екстензије датотеке ће решити проблем у вези са „ захтевају() ” метод:

Алтернативни приступ: Користите ЕС6 изјаву „увоз/извоз“

захтевају() ” метод је дефинисан и обезбеђен помоћу „ ЦоммонЈс ” и прихватљиво је до ЈаваСцрипт верзије ЕС5 (ЕЦМАСцрипт 5). Објављен је 2009. године и сада је застарео јер га многи најновији модули не подржавају или не раде исправно у ЕС5. Баш као и „ захтевају() ” метод се сада замењује оптимизованијим и лакшим “ увоз ” изјаве. Рад оба ентитета је исти, али „увоз“ има предност због најновије технологије и веће лакоће коју она пружа.

За подразумеване или екстерне модуле

У доњој демонстрацији, изјава „импорт“ се користи као алтернатива методи „рекуире()“ за увоз подразумеваног модула или модула треће стране:

увоз реадлинеОбј из 'реадлине' ;

конзола. Пријава ( реадлинеОбј ) ;

Након компилације поменутог кода, исти задатак који треба да уради „ захтевају() ” се изводи и „ РеференцеЕррор: Захтев није дефинисан ” се такође неће појавити:

За прилагођене модуле

увоз ” израз се такође користи за „увоз” прилагођених модула или функција из других датотека које се налазе у истим или различитим директоријумима. Функције или варијабле из других датотека се извозе помоћу „ извоз ” кључна реч. На пример, посетите доњи исечак кода у коме ће једна функција и случајна променљива бити увезена из друге датотеке:

апп.јс

конст екпортВариабле = „Овај водич обезбеђује Линукхинт!“ ;

конст екпортФунцтион = ( ) => {

конзола. Пријава ( екпортВариабле ) ;

} ;

извоз Уобичајено екпортФунцтион ;

извоз {

екпортВариабле

} ;

Објашњење горњег блока кода је следеће:

  • Прво, случајна променљива под називом „ екпортВариабле ” је дефинисан и функција стрелице “ екпортФунцтион() ” се креира који штампа креирану „екпортВариабле” преко конзоле.
  • Кључне речи „ подразумевани извоз ' и ' извоз ” се користе за извоз „ екпортФунцтион() ' и ' екпортВариабле ” ентитета из датотеке.
  • Када се ова датотека увезе, извезена функција и променљиве постају доступне за коришћење.

индек.јс

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

увоз екпортФунцтион, { екпортВариабле } из './апп.јс' ;

екпортФунцтион ( ) ;

конзола. Пријава ( екпортВариабле ) ;

У горњем коду, „ увоз ” израз се користи за увоз подразумеваног “ екпортФунцтион() ” и променљива “ екпортВариабле ' од ' апп.јс ” фајл.

Затим, оба увезена ентитета се позивају и приказују преко конзоле у ​​сврху верификације.

Сада извршите главни “ индек.јс ” датотеку користећи доле наведену команду:

индекс чвора. јс

Генерисани излаз показује да увезени елементи функционишу исправно без изазивања „ РеференцеЕррор: Захтев није дефинисан ” грешка:

То је све о решавању наведене грешке.

Закључак

Да бисте решили „ РеференцеЕррор: Захтев није дефинисан ” грешка, уклоните „ тип ” кључ који има вредност “ модул ' од ' пацкаге.јсон ” или измените екстензију датотеке која тренутно ради у „ .цјс ”. У случају да желите да радите у модуларној верзији ЕС6, уместо да користите „ захтевају() ” метод користи „ увоз ” приступ исказима. Овај водич је објаснио могуће поправке за решавање „ РеференцеЕррор: Захтев није дефинисан „грешка“ у ноде.јс