কিভাবে 'রেফারেন্স এরর প্রয়োজন সংজ্ঞায়িত করা হয় না' ত্রুটি সমাধান করবেন?

Kibhabe Repharensa Erara Prayojana Sanjnayita Kara Haya Na Truti Samadhana Karabena



Node.js নিজে থেকে কিছুই নয়, এর অস্তিত্ব নির্ভর করে প্রতিটি মডিউল দ্বারা প্রদত্ত মডিউল এবং পদ্ধতির উপর। এই মডিউলগুলির সাথে কাজ করার জন্য, বিকাশকারীকে প্রথমে এটি ইনস্টল করতে হবে এবং তারপরে এটি বর্তমানে কাজ করা ফাইলের মধ্যে আমদানি করতে হবে। মডিউলগুলি আমদানি করার জন্য দুটি উপায় রয়েছে যা জাভাস্ক্রিপ্টের সংস্করণের সাথে বিশেষভাবে সংযুক্ত রয়েছে যা বিকাশকারী এখন ব্যবহার করছে বা যার উপর অ্যাপ্লিকেশন মালিক তৈরি করতে চান৷ আমদানি করার সময় একাধিক ত্রুটির মুখোমুখি হওয়ার সুযোগ রয়েছে এবং একটি জনপ্রিয় এবং সবচেয়ে সাধারণ ত্রুটি প্রয়োজন() 'পদ্ধতি বর্ণনা করা হচ্ছে এবং সমাধান করা হচ্ছে।

এই নির্দেশিকাটি 'রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত নয়' ত্রুটিগুলি সমাধান করার পদ্ধতি ব্যাখ্যা করে৷

কিভাবে সমাধান করবেন 'রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয় না' ত্রুটি?

প্রকল্পে বাহ্যিক বা অন্তর্নির্মিত মডিউলগুলি আমদানি করতে দুটি পদ্ধতি ব্যবহার করা হয়, এগুলি ব্যবহার করছে ' প্রয়োজন() 'পদ্ধতি বা' আমদানি ' কীওয়ার্ড। উল্লেখিত ' রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয় না যখন একজন ব্যবহারকারী ব্যবহার করার চেষ্টা করে তখন ' সম্মুখীন হয় ' প্রয়োজন() 'ভিতরে পদ্ধতি' ES মডিউল সুযোগ নিম্নোক্ত কোডটি কার্যকর হলে node.js-এর কনসোলে আলোচিত ত্রুটিটি এইভাবে প্রদর্শিত হয়:









'সমাধান 'রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয়নি' ত্রুটির ঘটনার কারণ এবং তাদের সংশ্লিষ্ট সমাধানগুলি নীচের বিভাগে ব্যাখ্যা করা হয়েছে৷



কারণ 1: অ্যাপ্লিকেশনের ধরনটি মডিউলে সেট করা হয়েছে

যদি আপনার অ্যাপ্লিকেশন উল্লিখিত ত্রুটি প্রদর্শন করে, তাহলে সবচেয়ে সহজ এবং দীর্ঘস্থায়ী সমাধান হল 'এর পরিবর্তন package.json ' ফাইল। 'এর সাথে কী/মান জোড়ার জন্য অনুসন্ধান করুন চাবি 'এর' টাইপ ' এবং 'এর নির্ধারিত মান মডিউল ” এটি পুরো অ্যাপ্লিকেশনটির পরিবেশকে মডুলার করে তোলে, যা পুরানো ব্যবহারকে বাধা দেয় কমনজেএস 'মডিউল এবং পদ্ধতি। এই কী/মান জোড়ার ভিজ্যুয়াল উপস্থাপনা এই মত প্রদর্শিত হয়:





'প্রকার' : 'মডিউল' ,

সমাধান: 'টাইপ' কীটি সরান

সমাধান হল অপসারণ টাইপ 'node.js প্রকল্প থেকে কী এবং নির্ধারিত মান' package.json ' ফাইল। 'package.json' ফাইল থেকে অপসারণ ES6 মডিউল সুযোগকে কাজে লাগায় এবং 'require() পদ্ধতিটিকে কার্যকর করে তোলে৷ এখন, যখন একই কোড আবার কার্যকর করা হয় তখন ত্রুটির কোন ঘটনা ঘটবে না।



কারণ 2: “.mjs-এ কাজ করা ' ফাইল

দ্য ' .mjs ” হল একটি মডিউল জাভাস্ক্রিপ্ট সোর্স কোড ফাইল। এটি মডিউল পরিবেশের ভিতরে কোড ধারণ করে না ' কমনজেএস যা ভাল ব্যবস্থাপনার জন্য কোডটিকে একাধিক ফাইলে বিভক্ত করে। দ্য ' প্রয়োজন() 'পদ্ধতি 'এর অধীনে রয়েছে কমনজেএস ” এই কারণেই 'প্রয়োজন' পদ্ধতিটি অনির্ধারিত হয়ে যাবে যখন 'এর ভিতরে ব্যবহার করা হবে .mjs ” ফাইল এক্সটেনশন এবং উল্লিখিত ত্রুটির ঘটনার দিকে নিয়ে যায়:

সমাধান: ফাইল এক্সটেনশনকে '.cjs' এ রূপান্তর করুন

ঠিক মডুলার জাভাস্ক্রিপ্ট সোর্স কোডের মতই “এর ফাইল এক্সটেনশন .mjs ' সহজলভ্য. এর সম্প্রসারণ ' .cjs 'এর জন্য প্রদান করা হয়' কমনজেএস মডিউল এবং বৈশিষ্ট্য। এই ফাইলটি গ্রহণ করে না ' মডুলার 'প্যাকেজ যেমন' আমদানি কিন্তু ES5 সংস্করণের সাথে ভাল কাজ করে। আমাদের ক্ষেত্রে, পরিবর্তন করা ফাইল এক্সটেনশন 'এর সাথে সম্পর্কিত সমস্যাটি সমাধান করবে প্রয়োজন() 'পদ্ধতি:

বিকল্প পদ্ধতি: ES6 স্টেটমেন্ট 'আমদানি/রপ্তানি' ব্যবহার করুন

দ্য ' প্রয়োজন() ' পদ্ধতি সংজ্ঞায়িত এবং প্রদান করা হয় ' CommonJs ” এবং ES5 (ECMAScript 5) এর জাভাস্ক্রিপ্ট সংস্করণ পর্যন্ত গ্রহণযোগ্য। এটি 2009 সালে প্রকাশিত হয়েছিল এবং এখন অপ্রচলিত হয়ে গেছে কারণ অনেক সাম্প্রতিক মডিউল এটিকে সমর্থন করে না বা ES5 এ সঠিকভাবে কাজ করে না। ঠিক যেমন ' প্রয়োজন() 'পদ্ধতি এখন আরও অপ্টিমাইজ করা এবং সহজে প্রতিস্থাপিত হচ্ছে' আমদানি 'বিবৃতি। উভয় সত্ত্বার কাজ একই কিন্তু 'আমদানি' সর্বশেষ প্রযুক্তি এবং এটি দ্বারা প্রদত্ত আরও সহজতার কারণে একটি উপরের প্রান্ত রয়েছে।

ডিফল্ট বা বাহ্যিক মডিউলগুলির জন্য

নীচের প্রদর্শনীতে, 'আমদানি' বিবৃতিটি ডিফল্ট বা তৃতীয় পক্ষের মডিউল আমদানি করার জন্য 'প্রয়োজন()' পদ্ধতির বিকল্প হিসাবে ব্যবহার করা হচ্ছে:

আমদানি readlineObj থেকে 'রিডলাইন' ;

কনসোল লগ ( readlineObj ) ;

উল্লিখিত কোড সংকলন করার পরে, একই কাজ যা করতে হবে ' প্রয়োজন() 'পদ্ধতি সঞ্চালিত হয় এবং ' রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয় না 'এছাড়াও প্রদর্শিত হবে না:

কাস্টম বিল্ট মডিউল জন্য

দ্য ' আমদানি একই বা ভিন্ন ডিরেক্টরিতে থাকা অন্যান্য ফাইল থেকে কাস্টম-বিল্ড মডিউল বা ফাংশনগুলিকে 'আমদানি করতে' বিবৃতি ব্যবহার করা হয়। অন্যান্য ফাইলের ফাংশন বা ভেরিয়েবলগুলি ' ব্যবহার করে রপ্তানি করা হয় রপ্তানি ' কীওয়ার্ড। উদাহরণস্বরূপ, নীচের কোড স্নিপেটটি দেখুন যেখানে একটি একক ফাংশন এবং একটি র্যান্ডম ভেরিয়েবল অন্য ফাইল থেকে আমদানি করা হবে:

app.js

const রপ্তানি পরিবর্তনশীল = 'এই গাইডটি লিনাক্সহিন্ট দ্বারা সরবরাহ করা হয়েছে!' ;

const এক্সপোর্ট ফাংশন = ( ) => {

কনসোল লগ ( রপ্তানি পরিবর্তনশীল ) ;

} ;

রপ্তানি ডিফল্ট এক্সপোর্ট ফাংশন ;

রপ্তানি {

রপ্তানি পরিবর্তনশীল

} ;

উপরের কোড ব্লকের ব্যাখ্যা নিম্নরূপ:

  • প্রথমে, র্যান্ডম ভেরিয়েবলটির নাম “ রপ্তানি পরিবর্তনশীল ' সংজ্ঞায়িত করা হয় এবং তীর ফাংশন ' এক্সপোর্ট ফাংশন() ” তৈরি করা হয়েছে যা কনসোলে তৈরি করা “exportVariable” প্রিন্ট করে।
  • এর কীওয়ার্ড ' রপ্তানি ডিফল্ট ' এবং ' রপ্তানি 'রপ্তানি করতে ব্যবহার করা হয়' এক্সপোর্ট ফাংশন() ' এবং ' রপ্তানি পরিবর্তনশীল ফাইল থেকে সত্তা।
  • যখন এই ফাইলটি আমদানি করা হয় তখন রপ্তানিকৃত ফাংশন এবং ভেরিয়েবল সেখানে ব্যবহারের জন্য উপলব্ধ হয়ে যায়।

index.js

'index.js' হল আমাদের সেকেন্ডারি ফাইল যেখানে রপ্তানিকৃত ফাংশন এবং ভেরিয়েবল ইম্পোর্ট করা হবে এবং ব্যবহার করা হবে, এতে নিম্নোক্ত কোড রয়েছে:

আমদানি এক্সপোর্ট ফাংশন, { রপ্তানি পরিবর্তনশীল } থেকে './app.js' ;

এক্সপোর্ট ফাংশন ( ) ;

কনসোল লগ ( রপ্তানি পরিবর্তনশীল ) ;

উপরের কোডে, ' আমদানি 'বিবৃতিটি ডিফল্ট আমদানি করতে ব্যবহৃত হয়' এক্সপোর্ট ফাংশন() ' এবং পরিবর্তনশীল ' রপ্তানি পরিবর্তনশীল ' থেকে ' app.js ' ফাইল।

তারপরে, উভয় আমদানি করা সত্ত্বাকে আহবান করা হয় এবং যাচাইকরণের উদ্দেশ্যে কনসোলে প্রদর্শিত হয়।

এখন, প্রধানটি সম্পাদন করুন ' index.js নীচের নির্দেশিত কমান্ড ব্যবহার করে ফাইল:

নোড সূচক। জেএস

উৎপন্ন আউটপুট দেখায় যে আমদানি করা উপাদানগুলি সঠিকভাবে কাজ করছে না কারণ ' রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয় না ' ত্রুটি:

এটি নির্দিষ্ট ত্রুটি সমাধান সম্পর্কে সব।

উপসংহার

সমাধান করতে ' রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয় না 'ত্রুটি, সরান' প্রকার ' কী এর মান আছে ' মডিউল ' থেকে ' package.json 'অথবা বর্তমানে কাজ করা ফাইল এক্সটেনশনটিকে 'এ পরিবর্তন করুন .cjs ” আপনি যদি ES6 মডুলার সংস্করণে কাজ করতে চান তবে 'ব্যবহার করার পরিবর্তে প্রয়োজন() 'পদ্ধতি ব্যবহার করুন' আমদানি ” বিবৃতি পদ্ধতি। এই নির্দেশিকাটি সমাধান করার সম্ভাব্য সমাধানগুলি ব্যাখ্যা করেছে ' রেফারেন্স ত্রুটি: প্রয়োজন সংজ্ঞায়িত করা হয় না node.js এ 'ত্রুটি'