Овај водич објашњава процедуру за решавање грешака „РеференцеЕррор: Захтев није дефинисан“.
- Како да решите грешку „РеференцеЕррор: Захтев није дефинисан“?
- Разлог 1: Тип апликације је подешен на Модул
- Решење: Уклоните кључ „Тип“.
- Разлог 2: Рад у „.мјс ” Филе
- Решење: Конвертујте екстензију датотеке у „.цјс“
- Алтернативни приступ: Користите ЕС6 изјаву „увоз/извоз“
Како да решите грешку „РеференцеЕррор: Захтев није дефинисан“?
За увоз екстерних или уграђених модула у пројекат користе се два приступа, који користе „ захтевају() ” метод или “ увоз ” кључна реч. Поменути „ РеференцеЕррор: Захтев није дефинисан ” се суочава када корисник покуша да користи „ захтевају() ” метод унутар „ ЕС модул ' Обим. Грешка о којој се расправља се појављује овако преко конзоле у ноде.јс када се изврши доле наведени код:
Разлози за појаву грешке „Решите „РеференцеЕррор: захтев није дефинисан“ и њихова одговарајућа решења објашњени су у одељцима испод.
Разлог 1: Тип апликације је подешен на Модул
Ако ваша апликација приказује поменуту грешку, најлакше и дуготрајније решење је измена „ пацкаге.јсон ” фајл. Потражите пар кључ/вредност који има „ кључ ” од “ тип ” и додељена вредност „ модул ”. Ово чини окружење целе апликације модуларним, што спречава коришћење старих „ ЦоммонЈС ” модули и методе. Визуелни приказ овог пара кључ/вредност изгледа овако:
'тип' : 'модул' ,
Решење: Уклоните кључ „Тип“.
Решење је уклањање „ тип ” кључ и додељена вредност из пројекта ноде.јс “ пацкаге.јсон ” фајл. Уклањање из датотеке „пацкаге.јсон” користи опсег ЕС6 модула и чини метод „рекуире() функционалним. Сада, када се исти код поново изврши, неће бити грешке.
Разлог 2: Рад у „.мјс ” Филе
„ .мјс ” је датотека изворног кода ЈаваСцрипт модула. Садржи код унутар окружења модула, а не у „ ЦоммонЈС ” који дели код у више датотека ради бољег управљања. „ захтевају() ” метода се налази испод „ ЦоммонЈС ”. Зато ће метода „рекуире“ постати недефинисана када се користи унутар „ .мјс ” екстензија датотеке и доводи до појаве поменуте грешке:
Решење: Конвертујте екстензију датотеке у „.цјс“
Баш као модуларни ЈаваСцрипт изворни код, екстензија датотеке „ .мјс ' је доступан. Продужетак „ .цјс ” је предвиђено за „ ЦоммонЈС ” модули и својства. Ова датотека не прихвата „ модуларни ” пакети попут „ увоз ” али добро функционише са ЕС5 верзијама. У нашем случају, промена екстензије датотеке ће решити проблем у вези са „ захтевају() ” метод:
Алтернативни приступ: Користите ЕС6 изјаву „увоз/извоз“
„ захтевају() ” метод је дефинисан и обезбеђен помоћу „ ЦоммонЈс ” и прихватљиво је до ЈаваСцрипт верзије ЕС5 (ЕЦМАСцрипт 5). Објављен је 2009. године и сада је застарео јер га многи најновији модули не подржавају или не раде исправно у ЕС5. Баш као и „ захтевају() ” метод се сада замењује оптимизованијим и лакшим “ увоз ” изјаве. Рад оба ентитета је исти, али „увоз“ има предност због најновије технологије и веће лакоће коју она пружа.
За подразумеване или екстерне модуле
У доњој демонстрацији, изјава „импорт“ се користи као алтернатива методи „рекуире()“ за увоз подразумеваног модула или модула треће стране:
увоз реадлинеОбј из 'реадлине' ;конзола. Пријава ( реадлинеОбј ) ;
Након компилације поменутог кода, исти задатак који треба да уради „ захтевају() ” се изводи и „ РеференцеЕррор: Захтев није дефинисан ” се такође неће појавити:
За прилагођене модуле
„ увоз ” израз се такође користи за „увоз” прилагођених модула или функција из других датотека које се налазе у истим или различитим директоријумима. Функције или варијабле из других датотека се извозе помоћу „ извоз ” кључна реч. На пример, посетите доњи исечак кода у коме ће једна функција и случајна променљива бити увезена из друге датотеке:
апп.јс
конст екпортВариабле = „Овај водич обезбеђује Линукхинт!“ ;конст екпортФунцтион = ( ) => {
конзола. Пријава ( екпортВариабле ) ;
} ;
извоз Уобичајено екпортФунцтион ;
извоз {
екпортВариабле
} ;
Објашњење горњег блока кода је следеће:
- Прво, случајна променљива под називом „ екпортВариабле ” је дефинисан и функција стрелице “ екпортФунцтион() ” се креира који штампа креирану „екпортВариабле” преко конзоле.
- Кључне речи „ подразумевани извоз ' и ' извоз ” се користе за извоз „ екпортФунцтион() ' и ' екпортВариабле ” ентитета из датотеке.
- Када се ова датотека увезе, извезена функција и променљиве постају доступне за коришћење.
индек.јс
„индек.јс“ је наш секундарни фајл у који ће извезена функција и променљива бити увезена и коришћена, садржи доле наведени код:
увоз екпортФунцтион, { екпортВариабле } из './апп.јс' ;екпортФунцтион ( ) ;
конзола. Пријава ( екпортВариабле ) ;
У горњем коду, „ увоз ” израз се користи за увоз подразумеваног “ екпортФунцтион() ” и променљива “ екпортВариабле ' од ' апп.јс ” фајл.
Затим, оба увезена ентитета се позивају и приказују преко конзоле у сврху верификације.
Сада извршите главни “ индек.јс ” датотеку користећи доле наведену команду:
индекс чвора. јсГенерисани излаз показује да увезени елементи функционишу исправно без изазивања „ РеференцеЕррор: Захтев није дефинисан ” грешка:
То је све о решавању наведене грешке.
Закључак
Да бисте решили „ РеференцеЕррор: Захтев није дефинисан ” грешка, уклоните „ тип ” кључ који има вредност “ модул ' од ' пацкаге.јсон ” или измените екстензију датотеке која тренутно ради у „ .цјс ”. У случају да желите да радите у модуларној верзији ЕС6, уместо да користите „ захтевају() ” метод користи „ увоз ” приступ исказима. Овај водич је објаснио могуће поправке за решавање „ РеференцеЕррор: Захтев није дефинисан „грешка“ у ноде.јс