जावास्क्रिप्ट/नोड.जेएस में 'आवश्यकता परिभाषित नहीं है' त्रुटि का समाधान कैसे करें

Javaskripta Noda Je Esa Mem Avasyakata Paribhasita Nahim Hai Truti Ka Samadhana Kaise Karem



प्रोग्रामिंग यात्रा के दौरान, हमें सिंटैक्स त्रुटियों या रनटाइम त्रुटियों जैसी विभिन्न त्रुटियों का सामना करना पड़ सकता है। संदर्भ त्रुटि एक रनटाइम त्रुटि है. एक संदर्भ त्रुटि तब होती है जब एक गैर-प्रारंभिक चर या एक चर जो वर्तमान दायरे में मौजूद नहीं है, को संदर्भित किया गया है। त्रुटि 'आवश्यकता परिभाषित नहीं है' एक संदर्भ त्रुटि है जो इंगित करती है कि कीवर्ड 'आवश्यकता' के साथ कोई समस्या है।

यह आलेख इस त्रुटि के होने के कारणों और हम इसे ठीक करने के तरीकों पर विस्तार से चर्चा करता है।

JavaScript/Node.js में 'आवश्यकता परिभाषित नहीं है' त्रुटि का समाधान कैसे करें?

संदर्भ त्रुटि 'आवश्यकता नहीं मिली' तब होती है जब आवश्यकता() फ़ंक्शन जावास्क्रिप्ट फ़ाइल में पाया जाता है जिसे Node.js वातावरण के बजाय वेब ब्राउज़र में निष्पादित किया जाना था।







आवश्यकता() फ़ंक्शन क्या है?

require() फ़ंक्शन का वैश्विक दायरा है और यह Node.js द्वारा दिया गया है। यह Node.js एप्लिकेशन में मॉड्यूल लोड और चलाता है। कई ब्राउज़र Node.js की सहायता नहीं करते हैं इसलिए उनमें require() कार्यक्षमता उपलब्ध नहीं है।



यह त्रुटि कब होती है?

यह त्रुटि आमतौर पर तब होती है जब जावास्क्रिप्ट का उपयोग Node.js के साथ दोनों ब्राउज़रों में किया जाता है। त्रुटि तीन प्रकार से हो सकती है:



  • जब ब्राउज़र वातावरण में require() फ़ंक्शन का उपयोग किया जाता है।
  • जब आवश्यकता() फ़ंक्शन का उपयोग Node.js और package.json फ़ाइल में किया जाता है, तो प्रकार 'मॉड्यूल' पर सेट होता है
  • जब Node.js में require() फ़ंक्शन का उपयोग किया जाता है तो फ़ाइलों में .mjs का एक्सटेंशन होता है।

सिंटैक्स कॉन्स्ट का उपयोग करना ' मेरीफ़ाइल = आवश्यकता('./मेरी-फ़ाइल') वेब-आधारित वातावरण में एक त्रुटि उत्पन्न होगी जो इस प्रकार दिखाई देगी:





आइए इस त्रुटि को हल करने के लिए विभिन्न समाधानों पर चर्चा करें।



केस 1: ब्राउज़र परिवेश में त्रुटि

आवश्यकता() फ़ंक्शन विशेष रूप से Node.js में काम करता है। अधिकांश ब्राउज़र Node.js के साथ संगत हैं इसलिए वे require() कार्यक्षमता का समर्थन नहीं करते हैं। ES6 मॉड्यूल आयात निर्यात मॉड्यूल 'संदर्भ त्रुटि की आवश्यकता परिभाषित नहीं है' त्रुटि का समाधान करता है। यहां एक कोड का उदाहरण दिया गया है जो दिखाता है कि यह कैसे किया जा सकता है:

DOCTYPE html >

< शरीर >





< स्क्रिप्ट प्रकार = 'मापांक' स्रोत = 'index.js' > लिखी हुई कहानी >

< स्क्रिप्ट प्रकार = 'मापांक' स्रोत = 'फ़ाइल.जेएस' > लिखी हुई कहानी >

शरीर >

एचटीएमएल >

Index.js को पहले लोड किया जाता है ताकि इसकी कार्यक्षमताओं का उपयोग file.js में किया जा सके।

Index.js फ़ाइल

Index.js एक फ़ंक्शन उत्पाद और वेरिएबल x और y को परिभाषित करता है:

निर्यात फ़ंक्शन उत्पाद ( ए, बी ) {

वापस करना * बी ;

}

निर्यात कॉन्स्ट = 10 ;

निर्यात कॉन्स्ट और = 'टेलर'

फ़ाइल.जे.एस

Index.js फ़ाइल की कार्यक्षमताओं का उपयोग file.js नामक अन्य js फ़ाइल में किया जा सकता है। File.js इस तरह दिखता है:

आयात { उत्पाद, एक्स, वाई } से './index.js' ;

सांत्वना देना। लकड़ी का लट्ठा ( उत्पाद ( 10 , 5 ) ) ; // 50 प्रदर्शित करेगा

सांत्वना देना। लकड़ी का लट्ठा ( एक्स ) ; // 10 प्रदर्शित करेगा

सांत्वना देना। लकड़ी का लट्ठा ( और ) ; // 'टेलर' प्रदर्शित करेगा

उत्पादन

निम्नलिखित आउटपुट प्रदर्शित करता है कि ब्राउज़र वातावरण में 'आवश्यकता परिभाषित नहीं है' त्रुटि को ES6 आयात निर्यात मॉड्यूल का उपयोग करके कैसे हटाया जा सकता है:

केस 2: Node.js में काम करते समय त्रुटि

package.json फ़ाइल में, वैल्यू मॉड्यूल के साथ टाइप प्रॉपर्टी सेट करने पर यह त्रुटि मिलती है। यह तब भी हो सकता है जब फ़ाइल में .mjs एक्सटेंशन के साथ require() फ़ंक्शन का उपयोग किया जाता है।

इस त्रुटि को तब हटाया जा सकता है जब आप मॉड्यूल पर सेट प्रकार की संपत्ति को हटा देते हैं और .mjs एक्सटेंशन वाली किसी भी फ़ाइल का नाम बदलकर .js कर दिया जाता है।

//package.json

{

// आवश्यकता() का उपयोग करने के लिए मॉड्यूल पर सेट प्रकार की संपत्ति को हटा दें

'प्रकार' : 'मापांक' ,

}

Index.js फ़ाइल

Index.js फ़ाइल एक फ़ंक्शन 'उत्पाद' और वेरिएबल दायरे के साथ वेरिएबल x और y को परिभाषित करती है। यहां बताया गया है कि Index.js फ़ाइल कैसी दिखेगी:

कार्य उत्पाद ( ए, बी ) {

वापस करना * बी ;

}

वैश्विक। एक्स = 13 ;

वैश्विक। और = 'तेज' ;

मापांक। निर्यात = {

उत्पाद,

} ;

फ़ाइल.जे.एस

यह require() कीवर्ड का उपयोग करके JS फ़ाइल Index.js से फ़ंक्शन उत्पाद लेता है। File.js फ़ाइल इस तरह दिखेगी:

कॉन्स्ट { उत्पाद } = ज़रूरत होना ( './index.js' ) ;

सांत्वना देना। लकड़ी का लट्ठा ( उत्पाद ( 10 , 9 ) ) ; // 90 प्रदर्शित करेगा

सांत्वना देना। लकड़ी का लट्ठा ( एक्स ) ; // 13 प्रदर्शित करेगा

सांत्वना देना। लकड़ी का लट्ठा ( और ) ; // 'स्विफ्ट' प्रदर्शित करेगा

उत्पादन

आउटपुट प्रदर्शित करता है कि पैकेज.जेसन फ़ाइल से मॉड्यूल पर सेट प्रकार की संपत्ति को हटाकर त्रुटि 'आवश्यकता नहीं मिली' को कैसे हल किया जा सकता है:

याद रखने वाली चीज़ें

  • किसी मॉड्यूल को आयात करने के लिए ES6 मॉड्यूल सिंटैक्स को मॉड्यूल फ़ाइल के एक्सटेंशन के बारे में विशिष्ट होने की आवश्यकता होती है। जावास्क्रिप्ट को उचित प्रसंस्करण के लिए फ़ाइल प्रकार पता होना चाहिए।
  • ES6 मॉड्यूल को require() फ़ंक्शन के साथ एक साथ उपयोग नहीं किया जा सकता है।

निष्कर्ष

ब्राउज़र में ES6 मॉड्यूल सिंटैक्स का उपयोग करने से 'आवश्यकता परिभाषित नहीं है' समस्या हल हो जाती है या अन्यथा कोड स्निपेट को Node.js में चलाया जाना चाहिए। त्रुटि तब होती है जब ब्राउज़र में require() फ़ंक्शन का उपयोग किया जाता है। इस आलेख में चर्चा की गई है कि 'आवश्यकता परिभाषित नहीं है' समस्या को एक उदाहरण के साथ कैसे हल किया जा सकता है।