ఈ గైడ్ 'రిఫరెన్స్ ఎర్రర్: అవసరం నిర్వచించబడలేదు' లోపాలను పరిష్కరించే విధానాన్ని వివరిస్తుంది.
- 'రిఫరెన్స్ లోపం: అవసరం నిర్వచించబడలేదు' లోపాన్ని ఎలా పరిష్కరించాలి?
- కారణం 1: అప్లికేషన్ రకం మాడ్యూల్కి సెట్ చేయబడింది
- పరిష్కారం: 'రకం' కీని తొలగించండి
- కారణం 2: “.mjsలో పని చేస్తోంది ” ఫైల్
- పరిష్కారం: ఫైల్ ఎక్స్టెన్షన్ను “.cjs”కి మార్చండి
- ప్రత్యామ్నాయ విధానం: ES6 స్టేట్మెంట్ “దిగుమతి/ఎగుమతి” ఉపయోగించండి
'రిఫరెన్స్ లోపం: అవసరం నిర్వచించబడలేదు' లోపాన్ని ఎలా పరిష్కరించాలి?
ప్రాజెక్ట్లో బాహ్య లేదా అంతర్నిర్మిత మాడ్యూళ్లను దిగుమతి చేయడానికి రెండు విధానాలు ఉపయోగించబడతాయి, ఇవి ' అవసరం() 'పద్ధతి లేదా' దిగుమతి ” కీవర్డ్. పేర్కొన్న ' సూచన లోపం: అవసరం నిర్వచించబడలేదు ఒక వినియోగదారు 'ని ఉపయోగించడానికి ప్రయత్నించినప్పుడు ' ఎదుర్కొంటారు అవసరం() లోపల 'పద్ధతి' ES మాడ్యూల్ 'పరిధి. దిగువ పేర్కొన్న కోడ్ అమలు చేయబడినప్పుడు, చర్చించబడిన లోపం node.jsలోని కన్సోల్లో ఇలా కనిపిస్తుంది:
“రిఫరెన్స్ ఎర్రర్: అవసరం నిర్వచించబడలేదు” లోపం సంభవించడానికి గల కారణాలు మరియు వాటికి సంబంధించిన పరిష్కారాలు క్రింది విభాగాలలో వివరించబడ్డాయి.
కారణం 1: అప్లికేషన్ రకం మాడ్యూల్కి సెట్ చేయబడింది
మీ అప్లికేషన్ పేర్కొన్న లోపాన్ని ప్రదర్శిస్తున్నట్లయితే, ''ని సవరించడం సులభమయిన మరియు దీర్ఘకాల పరిష్కారం pack.json ” ఫైల్. “ని కలిగి ఉన్న కీ/విలువ జత కోసం శోధించండి కీ 'యొక్క' రకం ” మరియు కేటాయించిన విలువ “ మాడ్యూల్ ”. ఇది మొత్తం అప్లికేషన్ యొక్క పర్యావరణాన్ని మాడ్యులర్గా చేస్తుంది, ఇది పాత 'వినియోగాన్ని నిరోధిస్తుంది. CommonJS ” మాడ్యూల్స్ మరియు పద్ధతులు. ఈ కీ/విలువ జత యొక్క దృశ్యమాన ప్రాతినిధ్యం ఇలా కనిపిస్తుంది:
'రకం' : 'మాడ్యూల్' ,
పరిష్కారం: 'రకం' కీని తొలగించండి
'ని తొలగించడమే పరిష్కారం. రకం 'node.js ప్రాజెక్ట్ నుండి కీ మరియు కేటాయించిన విలువ' pack.json ” ఫైల్. “package.json” ఫైల్ నుండి తీసివేత ES6 మాడ్యూల్ స్కోప్ను ఉపయోగించుకుంటుంది మరియు “require() పద్ధతిని పని చేయగలిగేలా చేస్తుంది. ఇప్పుడు, అదే కోడ్ను మళ్లీ అమలు చేసినప్పుడు లోపం సంభవించదు.
కారణం 2: “.mjsలో పని చేస్తోంది ” ఫైల్
ది ' .mjs ” అనేది మాడ్యూల్ జావాస్క్రిప్ట్ సోర్స్ కోడ్ ఫైల్. ఇది మాడ్యూల్ ఎన్విరాన్మెంట్ లోపల కోడ్ని కలిగి ఉండదు ' CommonJS ” ఇది మెరుగైన నిర్వహణ కోసం కోడ్ను బహుళ ఫైల్లుగా విభజిస్తుంది. ది ' అవసరం() 'పద్ధతి' కింద ఉంది CommonJS ”. అందుకే 'అవసరం' పద్ధతిని లోపల ఉపయోగించినప్పుడు నిర్వచించబడదు .mjs ” ఫైల్ పొడిగింపు మరియు పేర్కొన్న లోపం సంభవించడానికి దారితీస్తుంది:
పరిష్కారం: ఫైల్ ఎక్స్టెన్షన్ను “.cjs”కి మార్చండి
మాడ్యులర్ జావాస్క్రిప్ట్ సోర్స్ కోడ్ లాగానే ఫైల్ ఎక్స్టెన్షన్ “ .mjs ' అందుబాటులో ఉంది. యొక్క పొడిగింపు ' .cjs ” కోసం అందించబడింది CommonJS ” మాడ్యూల్స్ మరియు లక్షణాలు. ఈ ఫైల్ అంగీకరించదు ' మాడ్యులర్ '' వంటి ప్యాకేజీలు దిగుమతి ” కానీ ES5 వెర్షన్లతో బాగా పని చేస్తుంది. మా విషయంలో, మారుతున్న ఫైల్ ఎక్స్టెన్షన్ “కి సంబంధించిన సమస్యను పరిష్కరిస్తుంది. అవసరం() 'పద్ధతి:
ప్రత్యామ్నాయ విధానం: ES6 స్టేట్మెంట్ “దిగుమతి/ఎగుమతి” ఉపయోగించండి
ది ' అవసరం() 'పద్ధతి నిర్వచించబడింది మరియు అందించబడింది' కామన్జెలు ” మరియు ES5 (ECMAScript 5) యొక్క జావాస్క్రిప్ట్ వెర్షన్ వరకు ఆమోదయోగ్యమైనది. ఇది 2009లో ప్రచురించబడింది మరియు అనేక తాజా మాడ్యూల్లు దీనికి మద్దతు ఇవ్వనందున లేదా ES5లో సరిగ్గా పని చేయనందున ఇప్పుడు వాడుకలో లేదు. కేవలం ' అవసరం() 'పద్ధతి ఇప్పుడు మరింత ఆప్టిమైజ్ చేయబడిన మరియు సులువుతో భర్తీ చేయబడింది' దిగుమతి ” ప్రకటనలు. రెండు ఎంటిటీల పని ఒకే విధంగా ఉంటుంది కానీ తాజా సాంకేతికత మరియు దాని ద్వారా అందించబడిన మరింత సౌలభ్యం కారణంగా 'దిగుమతి' ఎగువ అంచుని కలిగి ఉంది.
డిఫాల్ట్ లేదా బాహ్య మాడ్యూల్స్ కోసం
దిగువ ప్రదర్శనలో, డిఫాల్ట్ లేదా థర్డ్-పార్టీ మాడ్యూల్ను దిగుమతి చేయడానికి “అవసరం()” పద్ధతికి ప్రత్యామ్నాయంగా “దిగుమతి” స్టేట్మెంట్ ఉపయోగించబడుతోంది:
దిగుమతి చదవండిObj నుండి 'చదవడానికి' ;కన్సోల్. లాగ్ ( చదవండిObj ) ;
పేర్కొన్న కోడ్ను సంకలనం చేసిన తర్వాత, '' ద్వారా చేయవలసిన అదే పని అవసరం() 'పద్ధతి అమలు చేయబడుతుంది మరియు' సూచన లోపం: అవసరం నిర్వచించబడలేదు ” అలాగే కనిపించదు:
కస్టమ్ బిల్ట్ మాడ్యూల్స్ కోసం
ది ' దిగుమతి ” స్టేట్మెంట్ కస్టమ్-బిల్డ్ మాడ్యూల్స్ లేదా ఫంక్షన్లను ఒకే లేదా విభిన్న డైరెక్టరీలలో ఉన్న ఇతర ఫైల్ల నుండి “దిగుమతి” చేయడానికి కూడా ఉపయోగించబడుతుంది. ఇతర ఫైల్ల నుండి ఫంక్షన్లు లేదా వేరియబుల్లు “ని ఉపయోగించి ఎగుమతి చేయబడతాయి ఎగుమతి ” కీవర్డ్. ఉదాహరణకు, ఒక ఫంక్షన్ మరియు యాదృచ్ఛిక వేరియబుల్ మరొక ఫైల్ నుండి దిగుమతి చేయబడే క్రింది కోడ్ స్నిప్పెట్ని సందర్శించండి:
app.js
స్థిరంగా ఎగుమతి వేరియబుల్ = 'ఈ గైడ్ Linuxhint ద్వారా అందించబడింది!' ;స్థిరంగా ఎగుమతి ఫంక్షన్ = ( ) => {
కన్సోల్. లాగ్ ( ఎగుమతి వేరియబుల్ ) ;
} ;
ఎగుమతి డిఫాల్ట్ ఎగుమతి ఫంక్షన్ ;
ఎగుమతి {
ఎగుమతి వేరియబుల్
} ;
పై కోడ్ బ్లాక్ యొక్క వివరణ క్రింది విధంగా ఉంది:
- మొదట, యాదృచ్ఛిక వేరియబుల్ పేరు ' ఎగుమతి వేరియబుల్ ' నిర్వచించబడింది మరియు బాణం ఫంక్షన్ ' ఎగుమతి ఫంక్షన్() కన్సోల్పై సృష్టించబడిన “ఎగుమతి వేరియబుల్”ని ప్రింట్ చేసేలా సృష్టించబడింది.
- ' యొక్క కీలక పదాలు ఎగుమతి డిఫాల్ట్ 'మరియు' ఎగుమతి 'ఎగుమతి చేయడానికి ఉపయోగించబడుతుంది' ఎగుమతి ఫంక్షన్() 'మరియు' ఎగుమతి వేరియబుల్ ” ఫైల్ నుండి ఎంటిటీలు.
- ఈ ఫైల్ దిగుమతి అయినప్పుడు ఎగుమతి చేసిన ఫంక్షన్ మరియు వేరియబుల్స్ అక్కడ ఉపయోగించడానికి అందుబాటులోకి వస్తాయి.
index.js
“index.js” అనేది మా సెకండరీ ఫైల్, దీనిలో ఎగుమతి చేయబడిన ఫంక్షన్ మరియు వేరియబుల్ దిగుమతి చేయబడతాయి మరియు ఉపయోగించబడతాయి, ఇది దిగువ పేర్కొన్న కోడ్ను కలిగి ఉంటుంది:
దిగుమతి ఎగుమతి ఫంక్షన్, { ఎగుమతి వేరియబుల్ } నుండి './app.js' ;ఎగుమతి ఫంక్షన్ ( ) ;
కన్సోల్. లాగ్ ( ఎగుమతి వేరియబుల్ ) ;
పై కోడ్లో, ' దిగుమతి డిఫాల్ట్ను దిగుమతి చేయడానికి ప్రకటన ఉపయోగించబడుతుంది ఎగుమతి ఫంక్షన్() 'మరియు వేరియబుల్' ఎగుమతి వేరియబుల్ ' నుండి ' app.js ” ఫైల్.
ఆపై, ధృవీకరణ ప్రయోజనాల కోసం రెండు దిగుమతి చేసుకున్న ఎంటిటీలు అమలు చేయబడతాయి మరియు కన్సోల్లో ప్రదర్శించబడతాయి.
ఇప్పుడు, ప్రధాన 'ని అమలు చేయండి index.js క్రింద పేర్కొన్న ఆదేశాన్ని ఉపయోగించి ఫైల్:
నోడ్ సూచిక. jsఉత్పత్తి చేయబడిన అవుట్పుట్, దిగుమతి చేయబడిన మూలకాలు ''ని కలిగించకుండా సరిగ్గా పని చేస్తున్నాయని చూపిస్తుంది. సూచన లోపం: అవసరం నిర్వచించబడలేదు ” లోపం:
పేర్కొన్న లోపాన్ని పరిష్కరించడం గురించి అంతే.
ముగింపు
పరిష్కరించడానికి ' సూచన లోపం: అవసరం నిర్వచించబడలేదు 'దోషం, తొలగించు' రకం 'కీ' విలువను కలిగి ఉంటుంది మాడ్యూల్ ' నుండి ' pack.json ” లేదా ప్రస్తుతం పనిచేస్తున్న ఫైల్ ఎక్స్టెన్షన్ని “కి సవరించండి .cjs ”. మీరు ES6 మాడ్యులర్ వెర్షన్లో పని చేయాలనుకుంటే ''ని ఉపయోగించకుండా అవసరం() 'పద్ధతి ఉపయోగించండి' దిగుమతి ” ప్రకటనల విధానం. ఈ గైడ్ పరిష్కరించడానికి సాధ్యమయ్యే పరిష్కారాలను వివరించింది ' సూచన లోపం: అవసరం నిర్వచించబడలేదు node.jsలో 'దోషం'