JavaScript/Node.jsలో “అవసరం నిర్వచించబడలేదు” లోపాన్ని ఎలా పరిష్కరించాలి

Javascript Node Jslo Avasaram Nirvacincabadaledu Lopanni Ela Pariskarincali



ప్రోగ్రామింగ్ ప్రయాణంలో, మేము సింటాక్స్ ఎర్రర్‌లు లేదా రన్‌టైమ్ ఎర్రర్‌ల వంటి విభిన్న ఎర్రర్‌లను ఎదుర్కోవచ్చు. సూచన లోపం అనేది రన్‌టైమ్ లోపం. నాన్-ఇనిషియలైజ్డ్ వేరియబుల్ లేదా ప్రస్తుత స్కోప్‌లో లేని వేరియబుల్ సూచించబడినప్పుడు రిఫరెన్స్ ఎర్రర్ ఏర్పడుతుంది. 'అవసరం నిర్వచించబడలేదు' అనే లోపం 'అవసరం' అనే కీవర్డ్‌తో సమస్య ఉందని సూచించే సూచన లోపం.

ఈ వ్యాసం ఈ లోపం సంభవించే కారణాలను మరియు దానిని పరిష్కరించగల మార్గాలను వివరంగా చర్చిస్తుంది.

JavaScript/Node.jsలో “అవసరం నిర్వచించబడలేదు” లోపాన్ని ఎలా పరిష్కరించాలి?

Node.js ఎన్విరాన్‌మెంట్‌కు బదులుగా వెబ్ బ్రౌజర్‌లో అమలు చేయాల్సిన JavaScript ఫైల్‌లో అవసరం() ఫంక్షన్ కనుగొనబడినప్పుడు రిఫరెన్స్ లోపం “అవసరం కనుగొనబడలేదు” జరుగుతుంది.







అవసరం() ఫంక్షన్ అంటే ఏమిటి?

need() ఫంక్షన్‌కు గ్లోబల్ స్కోప్ ఉంది మరియు Node.js ద్వారా అందించబడుతుంది. ఇది Node.js అప్లికేషన్‌లో మాడ్యూల్‌లను లోడ్ చేస్తుంది మరియు అమలు చేస్తుంది. చాలా బ్రౌజర్‌లు Node.jsకి సహాయం చేయవు కాబట్టి వాటిలో అవసరమైన() కార్యాచరణ అందుబాటులో లేదు.



ఈ లోపం ఎప్పుడు జరుగుతుంది?

Node.jsతో పాటు రెండు బ్రౌజర్‌లలో JavaScript ఉపయోగించినప్పుడు ఈ లోపం సాధారణంగా సంభవిస్తుంది. లోపం మూడు విధాలుగా సంభవించవచ్చు:



  • అవసరం() ఫంక్షన్ బ్రౌజర్ వాతావరణంలో ఉపయోగించినప్పుడు.
  • Node.js మరియు package.json ఫైల్‌లో అవసరమైన() ఫంక్షన్‌ని ఉపయోగించినప్పుడు, రకం “మాడ్యూల్”కి సెట్ చేయబడుతుంది.
  • Node.jsలో అవసరమైన() ఫంక్షన్‌ని ఉపయోగించినప్పుడు ఫైల్‌లు .mjs పొడిగింపును కలిగి ఉంటాయి.

సింటాక్స్ కాన్స్ట్‌ని ఉపయోగించడం ' myFile = అవసరం(‘./my-file’) ” వెబ్ ఆధారిత వాతావరణంలో ఇలా కనిపించే లోపం కనిపిస్తుంది:





ఈ లోపాన్ని పరిష్కరించడానికి వివిధ పరిష్కారాలను చర్చిద్దాం.



కేస్ 1: బ్రౌజర్ ఎన్విరాన్‌మెంట్‌లో లోపం

అవసరం() ఫంక్షన్ ప్రత్యేకంగా Node.jsలో పని చేస్తుంది. చాలా బ్రౌజర్‌లు Node.jsకి అనుకూలంగా ఉంటాయి కాబట్టి అవి అవసరం() కార్యాచరణకు మద్దతు ఇవ్వవు. ES6 మాడ్యూల్ దిగుమతి ఎగుమతి మాడ్యూల్ “ReferenceError need is not defined” లోపాన్ని పరిష్కరిస్తుంది. ఇది ఎలా చేయాలో చూపించే కోడ్ యొక్క ఉదాహరణ ఇక్కడ ఉంది:

DOCTYPE html >

< శరీరం >





< స్క్రిప్ట్ రకం = 'మాడ్యూల్' src = 'index.js' > స్క్రిప్ట్ >

< స్క్రిప్ట్ రకం = 'మాడ్యూల్' src = 'file.js' > స్క్రిప్ట్ >

శరీరం >

html >

Index.js ముందుగా లోడ్ చేయబడుతుంది, తద్వారా దాని కార్యాచరణలు file.jsలో ఉపయోగించబడతాయి.

index.js ఫైల్

index.js ఒక ఫంక్షన్ ఉత్పత్తిని నిర్వచిస్తుంది మరియు వేరియబుల్స్ x మరియు y:

ఎగుమతి ఫంక్షన్ ఉత్పత్తి ( ఎ, బి ) {

తిరిగి a * బి ;

}

ఎగుమతి స్థిరంగా = 10 ;

ఎగుమతి స్థిరంగా మరియు = 'టేలర్'

file.js

index.js ఫైల్ నుండి ఫంక్షనాలిటీలను file.js అని పేరున్న ఇతర js ఫైల్‌లో ఉపయోగించవచ్చు. File.js ఇలా కనిపిస్తుంది:

దిగుమతి { ఉత్పత్తి, x, y } నుండి './index.js' ;

కన్సోల్. లాగ్ ( ఉత్పత్తి ( 10 , 5 ) ) ; // 50ని ప్రదర్శిస్తుంది

కన్సోల్. లాగ్ ( x ) ; // 10ని ప్రదర్శిస్తుంది

కన్సోల్. లాగ్ ( మరియు ) ; // 'టేలర్'ని ప్రదర్శిస్తుంది

అవుట్‌పుట్

ES6 దిగుమతి ఎగుమతి మాడ్యూల్‌ని ఉపయోగించి బ్రౌజర్ వాతావరణంలో “అవసరం నిర్వచించబడలేదు” అనే లోపాన్ని ఎలా తొలగించవచ్చో క్రింది అవుట్‌పుట్ ప్రదర్శిస్తుంది:

కేస్ 2: Node.jsలో పని చేస్తున్నప్పుడు లోపం

ప్యాకేజీ.json ఫైల్‌లో, విలువ మాడ్యూల్‌తో టైప్ ప్రాపర్టీని సెట్ చేయడం వల్ల ఈ ఎర్రర్ వస్తుంది. .mjs పొడిగింపుతో ఫైల్‌లో అవసరం() ఫంక్షన్‌ని ఉపయోగించినట్లయితే కూడా ఇది జరగవచ్చు.

మీరు మాడ్యూల్‌కు సెట్ చేయబడిన టైప్ ప్రాపర్టీని తీసివేసినప్పుడు మరియు .mjs ఎక్స్‌టెన్షన్ ఉన్న ఏదైనా ఫైల్ .jsగా పేరు మార్చబడినప్పుడు ఈ లోపం తొలగించబడుతుంది.

//package.json

{

// అవసరం()ని ఉపయోగించడానికి మాడ్యూల్‌కి సెట్ చేయబడిన టైప్ ప్రాపర్టీని తీసివేయండి

'రకం' : 'మాడ్యూల్' ,

}

index.js ఫైల్

index.js ఫైల్ ఒక ఫంక్షన్ “ఉత్పత్తి”ని నిర్వచిస్తుంది మరియు వేరియబుల్ స్కోప్‌తో వేరియబుల్స్ x మరియు y. index.js ఫైల్ ఎలా ఉంటుందో ఇక్కడ ఉంది:

ఫంక్షన్ ఉత్పత్తి ( ఎ, బి ) {

తిరిగి a * బి ;

}

ప్రపంచ. x = 13 ;

ప్రపంచ. మరియు = 'వేగంగా' ;

మాడ్యూల్. ఎగుమతులు = {

ఉత్పత్తి,

} ;

file.js

ఇది అవసరం() కీవర్డ్‌ని ఉపయోగించడం ద్వారా JS ఫైల్ index.js నుండి ఫంక్షన్ ఉత్పత్తిని తీసుకుంటుంది. file.js ఫైల్ ఇలా కనిపిస్తుంది:

స్థిరంగా { ఉత్పత్తి } = అవసరం ( './index.js' ) ;

కన్సోల్. లాగ్ ( ఉత్పత్తి ( 10 , 9 ) ) ; // 90ని ప్రదర్శిస్తుంది

కన్సోల్. లాగ్ ( x ) ; // 13ని ప్రదర్శిస్తుంది

కన్సోల్. లాగ్ ( మరియు ) ; // 'స్విఫ్ట్' ప్రదర్శిస్తుంది

అవుట్‌పుట్

Package.json ఫైల్ నుండి మాడ్యూల్‌కి సెట్ చేయబడిన రకం యొక్క ఆస్తిని తీసివేయడం ద్వారా 'అవసరం కనుగొనబడలేదు' అనే లోపాన్ని ఎలా పరిష్కరించవచ్చో అవుట్‌పుట్ ప్రదర్శిస్తుంది:

గుర్తుంచుకోవలసిన విషయాలు

  • మాడ్యూల్‌ను దిగుమతి చేయడానికి ES6 మాడ్యూల్ సింటాక్స్‌కు మాడ్యూల్ ఫైల్ పొడిగింపు గురించి నిర్దిష్టంగా ఉండటం అవసరం. JavaScript దాని సరైన ప్రాసెసింగ్ కోసం ఫైల్ రకాన్ని తెలుసుకోవాలి.
  • ES6 మాడ్యూల్ అవసరం() ఫంక్షన్‌తో ఏకకాలంలో ఉపయోగించబడదు.

ముగింపు

బ్రౌజర్‌లో ES6 మాడ్యూల్ సింటాక్స్‌ని ఉపయోగించడం వలన 'అవసరం నిర్వచించబడలేదు' అనే సమస్యను పరిష్కరిస్తుంది లేదా లేకపోతే కోడ్ స్నిప్పెట్ తప్పనిసరిగా Node.jsలో అమలు చేయబడాలి. అవసరం() ఫంక్షన్‌ని బ్రౌజర్‌లో ఉపయోగించినప్పుడు లోపం సంభవిస్తుంది. 'అవసరం నిర్వచించబడలేదు' సమస్యను ఉదాహరణతో ఎలా పరిష్కరించవచ్చో ఈ కథనం చర్చించింది.