JavaScript/Node.js میں 'ضرورت کی وضاحت نہیں کی گئی' خرابی کو کیسے حل کیا جائے

Javascript Node Js My Drwrt Ky Wdaht N Y Ky Gyy Khraby Kw Kys Hl Kya Jay



پروگرامنگ کے سفر کے دوران، ہمیں مختلف غلطیوں کا سامنا کرنا پڑ سکتا ہے جیسے نحو کی غلطیاں یا رن ٹائم کی غلطیاں۔ حوالہ کی خرابی رن ٹائم کی غلطی ہے۔ ایک حوالہ کی خرابی اس وقت ہوتی ہے جب ایک غیر ابتدائی متغیر یا ایک متغیر جو موجودہ دائرہ کار میں موجود نہیں ہے کا حوالہ دیا گیا ہے۔ غلطی 'ضرورت کی وضاحت نہیں کی گئی ہے' ایک حوالہ کی غلطی ہے جو اس بات کی نشاندہی کرتی ہے کہ مطلوبہ لفظ 'ضرورت' کے ساتھ کوئی مسئلہ ہے۔

اس مضمون میں اس خرابی کے پیش آنے کی وجوہات اور اس کو ٹھیک کرنے کے طریقوں پر تفصیل سے بحث کی گئی ہے۔

JavaScript/Node.js میں 'ضرورت کی وضاحت نہیں کی گئی' خرابی کو کیسے حل کیا جائے؟

حوالہ کی خرابی 'ضرورت نہیں ملی' اس وقت ہوتی ہے جب JavaScript فائل میں need() فنکشن پایا جاتا ہے جسے Node.js ماحول کے بجائے ویب براؤزر میں انجام دیا جانا تھا۔







ضرورت () فنکشن کیا ہے؟

need() فنکشن کا عالمی دائرہ کار ہے اور اسے Node.js نے دیا ہے۔ یہ Node.js ایپلی کیشن میں ماڈیول لوڈ اور چلاتا ہے۔ بہت سے براؤزر Node.js کی مدد نہیں کرتے ہیں لہذا ان میں need() فعالیت دستیاب نہیں ہے۔



یہ خرابی کب ہوتی ہے؟

یہ خرابی عام طور پر اس وقت ہوتی ہے جب جاوا اسکرپٹ Node.js کے ساتھ دونوں براؤزر میں استعمال ہوتا ہے۔ غلطی تین طریقوں سے ہوسکتی ہے:



  • جب ضرورت () فنکشن براؤزر کے ماحول میں استعمال ہوتا ہے۔
  • جب Node.js اور package.json فائل میں need() فنکشن استعمال کیا جاتا ہے تو قسم کو 'ماڈیول' پر سیٹ کیا جاتا ہے۔
  • جب Node.js میں require() فنکشن استعمال کیا جاتا ہے تو فائلز میں .mjs کی توسیع ہوتی ہے۔

نحوی const کا استعمال کرتے ہوئے ' myFile = درکار ('./my-file') ویب پر مبنی ماحول میں ایک غلطی پھینک دے گا جو اس طرح نظر آتی ہے:





آئیے اس خرابی کو دور کرنے کے لیے مختلف حل پر بات کرتے ہیں۔



کیس 1: براؤزر کے ماحول میں خرابی۔

require() فنکشن خاص طور پر Node.js میں کام کرتا ہے۔ زیادہ تر براؤزرز Node.js کے ساتھ مطابقت رکھتے ہیں اس لیے وہ require() فعالیت کو سپورٹ نہیں کرتے۔ ES6 ماڈیول امپورٹ ایکسپورٹ ماڈیول 'Reference Error Required is not defined' غلطی کو حل کرتا ہے۔ یہاں ایک کوڈ کی ایک مثال ہے جو ظاہر کرتی ہے کہ یہ کیسے کیا جا سکتا ہے:

DOCTYPE html >

< جسم >





< سکرپٹ کی قسم = 'ماڈیول' src = 'index.js' >> سکرپٹ >

< سکرپٹ کی قسم = 'ماڈیول' src = 'file.js' >> سکرپٹ >

جسم >

html >

Index.js کو پہلے لوڈ کیا جاتا ہے تاکہ اس کی فعالیت کو file.js میں استعمال کیا جا سکے۔

index.js فائل

index.js ایک فنکشن پروڈکٹ اور متغیرات x اور y کی وضاحت کرتا ہے:

برآمد تقریب کی مصنوعات ( a، b ) {

واپسی a * ب ;

}

برآمد const = 10 ;

برآمد const اور = 'ٹیلر'

file.js

index.js فائل کی خصوصیات دوسری js فائل میں استعمال کی جا سکتی ہیں جس کا نام file.js ہے۔ File.js ایسا لگتا ہے:

درآمد { پروڈکٹ، x، y } سے './index.js' ;

تسلی. لاگ ( مصنوعات ( 10 , 5 ) ) ; // 50 ظاہر کرے گا۔

تسلی. لاگ ( ایکس ) ; // 10 ظاہر کرے گا۔

تسلی. لاگ ( اور ) ; // 'TAYLOR' دکھائے گا

آؤٹ پٹ

درج ذیل آؤٹ پٹ دکھاتا ہے کہ کس طرح براؤزر کے ماحول میں خرابی 'ضرورت کی وضاحت نہیں کی گئی ہے' کو ES6 امپورٹ ایکسپورٹ ماڈیول کا استعمال کرکے ہٹایا جا سکتا ہے:

کیس 2: Node.js میں کام کرتے وقت خرابی۔

package.json فائل میں ویلیو ماڈیول کے ساتھ ٹائپ پراپرٹی سیٹ کرنے سے یہ ایرر آتا ہے۔ یہ اس صورت میں بھی ہو سکتا ہے جب فائل میں ضرورت () فنکشن کو ایکسٹینشن .mjs کے ساتھ استعمال کیا جائے۔

یہ خرابی اس وقت دور کی جا سکتی ہے جب آپ ماڈیول میں سیٹ کی گئی ٹائپ پراپرٹی کو ہٹاتے ہیں اور ایکسٹینشن .mjs والی کسی بھی فائل کا نام .js رکھ دیا جاتا ہے۔

//package.json

{

// مطلوبہ () استعمال کرنے کے لیے ماڈیول پر سیٹ کی گئی قسم کی خاصیت کو ہٹا دیں۔

'قسم' : 'ماڈیول' ,

}

index.js فائل

index.js فائل ایک فنکشن 'پروڈکٹ' کی وضاحت کرتی ہے اور متغیر دائرہ کار کے ساتھ متغیرات x اور y۔ یہاں ہے index.js فائل کیسی نظر آئے گی:

فنکشن کی مصنوعات ( a، b ) {

واپسی a * ب ;

}

عالمی ایکس = 13 ;

عالمی اور = 'تیز رو' ;

ماڈیول برآمدات = {

مصنوعات،

} ;

file.js

یہ ضرورت () کلیدی لفظ استعمال کرکے JS فائل index.js سے فنکشن پروڈکٹ لیتا ہے۔ file.js فائل اس طرح نظر آئے گی:

const { مصنوعات } = ضرورت ہے ( './index.js' ) ;

تسلی. لاگ ( مصنوعات ( 10 , 9 ) ) ; // 90 ظاہر کرے گا۔

تسلی. لاگ ( ایکس ) ; // 13 ظاہر کرے گا۔

تسلی. لاگ ( اور ) ; // 'سوئفٹ' دکھائے گا

آؤٹ پٹ

آؤٹ پٹ دکھاتا ہے کہ کس طرح 'Require is not found' کی خرابی کو package.json فائل سے ماڈیول پر سیٹ کی خاصیت کو ہٹا کر حل کیا جا سکتا ہے:

یاد رکھنے والی چیزیں

  • ماڈیول درآمد کرنے کے لیے ES6 ماڈیول نحو کے لیے ماڈیول فائل کی توسیع کے بارے میں مخصوص ہونا ضروری ہے۔ جاوا اسکرپٹ کو اس کی مناسب پروسیسنگ کے لیے فائل کی قسم معلوم ہونی چاہیے۔
  • ES6 ماڈیول کو ضرورت () فنکشن کے ساتھ بیک وقت استعمال نہیں کیا جا سکتا۔

نتیجہ

براؤزر میں ES6 ماڈیول نحو استعمال کرنے سے مسئلہ حل ہو جاتا ہے 'ضرورت کی وضاحت نہیں کی گئی ہے' یا بصورت دیگر کوڈ کا ٹکڑا Node.js میں چلایا جانا چاہیے۔ خرابی اس وقت ہوتی ہے جب ضرورت () فنکشن براؤزر میں استعمال ہوتا ہے۔ اس مضمون میں اس بات پر تبادلہ خیال کیا گیا ہے کہ 'ضرورت کی وضاحت نہیں کی گئی ہے' کے مسئلے کو مثال کے ساتھ کیسے حل کیا جا سکتا ہے۔