यह मार्गदर्शिका 'संदर्भ त्रुटि: आवश्यकता परिभाषित नहीं है' त्रुटियों को हल करने की प्रक्रिया बताती है।
- 'संदर्भ त्रुटि: आवश्यकता परिभाषित नहीं है' त्रुटि का समाधान कैसे करें?
- कारण 1: एप्लिकेशन का प्रकार मॉड्यूल पर सेट है
- समाधान: 'प्रकार' कुंजी हटाएँ
- कारण 2: '.एमजेएस' में काम करना ” फ़ाइल
- समाधान: फ़ाइल एक्सटेंशन को '.cjs' में बदलें
- वैकल्पिक दृष्टिकोण: ES6 कथन 'आयात/निर्यात' का उपयोग करें
'संदर्भ त्रुटि: आवश्यकता परिभाषित नहीं है' त्रुटि का समाधान कैसे करें?
प्रोजेक्ट में बाहरी या अंतर्निर्मित मॉड्यूल आयात करने के लिए दो दृष्टिकोणों का उपयोग किया जाता है, ये 'का उपयोग कर रहे हैं' ज़रूरत होना() ' विधि या ' आयात 'कीवर्ड. उल्लेखित ' ReferenceError: आवश्यकता परिभाषित नहीं है ' का सामना तब होता है जब कोई उपयोगकर्ता ' का उपयोग करने का प्रयास करता है ज़रूरत होना() 'के अंदर विधि' ईएस मॉड्यूल ' दायरा। जब नीचे बताया गया कोड निष्पादित हो जाता है तो चर्चा की गई त्रुटि नोड.जेएस में कंसोल पर इस तरह दिखाई देती है:
'Resolve 'ReferenceError: require is not default' त्रुटि के घटित होने के कारण और उनके संबंधित समाधान नीचे दिए गए अनुभागों में बताए गए हैं।
कारण 1: एप्लिकेशन का प्रकार मॉड्यूल पर सेट है
यदि आपका एप्लिकेशन उल्लिखित त्रुटि प्रदर्शित कर रहा है, तो सबसे आसान और दीर्घकालिक समाधान 'का संशोधन है' package.json ' फ़ाइल। कुंजी/मान युग्म की खोज करें जिसमें ' चाबी ' का ' प्रकार ' और ' का निर्दिष्ट मान मापांक ”। यह पूरे एप्लिकेशन के वातावरण को मॉड्यूलर बनाता है, जो पुराने के उपयोग को रोकता है। कॉमनजेएस मॉड्यूल और विधियाँ। इस कुंजी/मान युग्म का दृश्य प्रतिनिधित्व इस प्रकार दिखाई देता है:
'प्रकार' : 'मापांक' ,
समाधान: 'प्रकार' कुंजी हटाएँ
समाधान 'को हटाना है' प्रकार 'नोड.जेएस प्रोजेक्ट से कुंजी और निर्दिष्ट मान' package.json ' फ़ाइल। 'पैकेज.जेसन' फ़ाइल से निष्कासन ईएस 6 मॉड्यूल दायरे का फायदा उठाता है और 'आवश्यकता() विधि को काम करने योग्य बनाता है। अब, जब वही कोड दोबारा निष्पादित किया जाएगा तो कोई त्रुटि नहीं होगी।
कारण 2: '.एमजेएस' में काम करना ” फ़ाइल
“ .एमजेएस ” एक मॉड्यूल जावास्क्रिप्ट स्रोत कोड फ़ाइल है। इसमें मॉड्यूल वातावरण के अंदर कोड शामिल है न कि ' कॉमनजेएस जो बेहतर प्रबंधन क्षमता के लिए कोड को कई फाइलों में विभाजित करता है। “ ज़रूरत होना() 'विधि' के अंतर्गत आती है कॉमनजेएस ”। इसीलिए 'आवश्यकता' विधि 'के अंदर उपयोग किए जाने पर अपरिभाषित हो जाएगी' .एमजेएस 'फ़ाइल एक्सटेंशन और उल्लिखित त्रुटि की घटना की ओर ले जाता है:
समाधान: फ़ाइल एक्सटेंशन को '.cjs' में बदलें
मॉड्यूलर जावास्क्रिप्ट स्रोत कोड की तरह ही 'का फ़ाइल एक्सटेंशन' .एमजेएस ' उपलब्ध है। का विस्तार ' .सीजेएस 'के लिए प्रदान किया गया है' कॉमनजेएस मॉड्यूल और गुण। यह फ़ाइल 'स्वीकार नहीं करती' मॉड्यूलर 'जैसे पैकेज' आयात लेकिन ES5 संस्करणों के साथ अच्छा काम करता है। हमारे मामले में, फ़ाइल एक्सटेंशन बदलने से 'से संबंधित समस्या का समाधान हो जाएगा' ज़रूरत होना() ' तरीका:
वैकल्पिक दृष्टिकोण: ES6 कथन 'आयात/निर्यात' का उपयोग करें
“ ज़रूरत होना() 'विधि' द्वारा परिभाषित और प्रदान की गई है कॉमनजे.एस ” और ES5 (ECMAScript 5) के जावास्क्रिप्ट संस्करण तक स्वीकार्य है। यह 2009 में प्रकाशित हुआ था और अब अप्रचलित हो गया है क्योंकि कई नवीनतम मॉड्यूल इसका समर्थन नहीं करते हैं या ES5 में ठीक से काम नहीं करते हैं। ठीक वैसे ही जैसे ' ज़रूरत होना() 'विधि को अब अधिक अनुकूलित और आसान तरीकों से बदला जा रहा है' आयात “बयान. दोनों संस्थाओं का कामकाज समान है लेकिन नवीनतम तकनीक और इसके द्वारा प्रदान की गई अधिक आसानी के कारण 'आयात' को ऊपरी बढ़त हासिल है।
डिफ़ॉल्ट या बाहरी मॉड्यूल के लिए
नीचे दिए गए प्रदर्शन में, 'आयात' कथन का उपयोग डिफ़ॉल्ट या तृतीय-पक्ष मॉड्यूल को आयात करने के लिए 'आवश्यकता()' विधि के विकल्प के रूप में किया जा रहा है:
आयात readlineObj से 'पढ़ने के लिए लाइन' ;सांत्वना देना। लकड़ी का लट्ठा ( readlineObj ) ;
उल्लिखित कोड के संकलन के बाद, वही कार्य करना होगा जो “ ज़रूरत होना() ' विधि निष्पादित की जाती है और ' ReferenceError: आवश्यकता परिभाषित नहीं है ' भी दिखाई नहीं देगा:
कस्टम निर्मित मॉड्यूल के लिए
“ आयात '' स्टेटमेंट का उपयोग कस्टम-बिल्ड मॉड्यूल या फ़ंक्शंस को समान या अलग निर्देशिकाओं में रहने वाली अन्य फ़ाइलों से 'आयात' करने के लिए भी किया जाता है। अन्य फ़ाइलों के फ़ंक्शंस या वेरिएबल्स को 'का उपयोग करके निर्यात किया जाता है' निर्यात 'कीवर्ड. उदाहरण के लिए, नीचे दिए गए कोड स्निपेट पर जाएं जिसमें एक एकल फ़ंक्शन और एक यादृच्छिक चर को दूसरी फ़ाइल से आयात किया जाएगा:
ऐप.जे.एस
कॉन्स्ट निर्यात चर = 'यह मार्गदर्शिका Linuxhint द्वारा प्रदान की गई है!' ;कॉन्स्ट निर्यातफ़ंक्शन = ( ) => {
सांत्वना देना। लकड़ी का लट्ठा ( निर्यात चर ) ;
} ;
निर्यात गलती करना निर्यातफ़ंक्शन ;
निर्यात {
निर्यात चर
} ;
उपरोक्त कोड ब्लॉक की व्याख्या इस प्रकार है:
- सबसे पहले, यादृच्छिक चर का नाम ' निर्यात चर ' परिभाषित किया गया है और तीर फ़ंक्शन ' निर्यातफ़ंक्शन() ” बनाया गया है जो कंसोल पर बनाए गए “exportVariable” को प्रिंट करता है।
- 'के कीवर्ड निर्यात डिफ़ॉल्ट ' और ' निर्यात ' का उपयोग निर्यात करने के लिए किया जाता है ' निर्यातफ़ंक्शन() ' और ' निर्यात चर फ़ाइल से इकाइयाँ।
- जब यह फ़ाइल आयात की जाती है तो निर्यातित फ़ंक्शन और वेरिएबल वहां उपयोग के लिए उपलब्ध हो जाते हैं।
सूचकांक.जे.एस
'index.js' हमारी द्वितीयक फ़ाइल है जिसमें निर्यात किए गए फ़ंक्शन और वेरिएबल को आयात और उपयोग किया जाएगा, इसमें नीचे दिया गया कोड शामिल है:
आयात निर्यातफ़ंक्शन, { निर्यात चर } से './app.js' ;निर्यातफ़ंक्शन ( ) ;
सांत्वना देना। लकड़ी का लट्ठा ( निर्यात चर ) ;
उपरोक्त कोड में, ' आयात 'कथन का उपयोग डिफ़ॉल्ट आयात करने के लिए किया जाता है' निर्यातफ़ंक्शन() 'और चर' निर्यात चर ' से ' ऐप.जे.एस ' फ़ाइल।
फिर, सत्यापन उद्देश्यों के लिए दोनों आयातित इकाइयों को कंसोल पर लागू और प्रदर्शित किया जाता है।
अब, मुख्य निष्पादित करें ' सूचकांक.जे.एस नीचे दिए गए आदेश का उपयोग करके फ़ाइल करें:
नोड सूचकांक. जे.एसउत्पन्न आउटपुट दिखाता है कि आयातित तत्व बिना किसी समस्या के सही ढंग से काम कर रहे हैं। ReferenceError: आवश्यकता परिभाषित नहीं है ' गलती:
यह सब निर्दिष्ट त्रुटि को हल करने के बारे में है।
निष्कर्ष
को हल करने के लिए ' ReferenceError: आवश्यकता परिभाषित नहीं है 'त्रुटि, हटाएं' प्रकार ' कुंजी जिसका मान ' है मापांक ' से ' package.json 'या वर्तमान में काम कर रहे फ़ाइल एक्सटेंशन को संशोधित करें' .सीजेएस ”। यदि आप ES6 मॉड्यूलर संस्करण में काम करना चाहते हैं तो इसके बजाय ' ज़रूरत होना() 'विधि का उपयोग करें' आयात बयान दृष्टिकोण। इस गाइड ने '' को हल करने के लिए संभावित समाधानों की व्याख्या की है। ReferenceError: आवश्यकता परिभाषित नहीं है नोड.जेएस में 'त्रुटि'।