இந்த பிழை ஏற்படுவதற்கான காரணங்கள் மற்றும் அதை சரிசெய்யும் வழிகள் பற்றி இந்த கட்டுரை விரிவாக விவாதிக்கிறது.
JavaScript/Node.js இல் 'தேவை வரையறுக்கப்படவில்லை' பிழையை எவ்வாறு தீர்ப்பது?
Node.js சூழலுக்குப் பதிலாக இணைய உலாவியில் செயல்படுத்தப்பட வேண்டிய ஜாவாஸ்கிரிப்ட் கோப்பில் தேவை() செயல்பாடு காணப்பட்டால் 'require கிடைக்கவில்லை' என்ற குறிப்புப் பிழை நிகழ்கிறது.
தேவை() செயல்பாடு என்றால் என்ன?
need() செயல்பாடு உலகளாவிய நோக்கத்தைக் கொண்டுள்ளது மற்றும் Node.js ஆல் வழங்கப்படுகிறது. இது Node.js பயன்பாட்டில் தொகுதிகளை ஏற்றி இயக்குகிறது. பல உலாவிகள் Node.jsக்கு உதவுவதில்லை, எனவே தேவை() செயல்பாடு அவற்றில் இல்லை.
இந்த பிழை எப்போது நடக்கும்?
Node.js உடன் இரண்டு உலாவிகளிலும் ஜாவாஸ்கிரிப்ட் பயன்படுத்தப்படும்போது இந்தப் பிழை பொதுவாக ஏற்படும். பிழை மூன்று வழிகளில் ஏற்படலாம்:
- தேவை() செயல்பாடு உலாவி சூழலில் பயன்படுத்தப்படும் போது.
- Node.js மற்றும் package.json கோப்பில் தேவை() செயல்பாடு பயன்படுத்தப்படும் போது, வகை 'தொகுதி' என அமைக்கப்படும்.
- Node.js இல் தேவை() செயல்பாடு பயன்படுத்தப்படும் போது கோப்புகள் .mjs இன் நீட்டிப்பைக் கொண்டிருக்கும்.
தொடரியல் const ஐப் பயன்படுத்துதல் ' myFile = தேவை(‘./my-file’) ” இணைய அடிப்படையிலான சூழலில் இது போன்ற ஒரு பிழை ஏற்படும்:
இந்த பிழையை தீர்க்க பல்வேறு தீர்வுகளை விவாதிப்போம்.
வழக்கு 1: உலாவி சூழலில் பிழை
தேவை() செயல்பாடு குறிப்பாக Node.js இல் வேலை செய்கிறது. பெரும்பாலான உலாவிகள் Node.js உடன் இணக்கமாக இருப்பதால் அவை தேவை() செயல்பாட்டை ஆதரிக்காது. ES6 தொகுதி இறக்குமதி ஏற்றுமதி தொகுதி 'குறிப்பு பிழை தேவை வரையறுக்கப்படவில்லை' பிழையை தீர்க்கிறது. அதை எப்படிச் செய்யலாம் என்பதைக் காட்டும் குறியீட்டின் உதாரணம் இங்கே:
DOCTYPE html >< உடல் >
< ஸ்கிரிப்ட் வகை = 'தொகுதி' src = 'index.js' > கையால் எழுதப்பட்ட தாள் >
< ஸ்கிரிப்ட் வகை = 'தொகுதி' src = 'file.js' > கையால் எழுதப்பட்ட தாள் >
உடல் >
html >
Index.js முதலில் ஏற்றப்படும், அதனால் அதன் செயல்பாடுகளை file.js இல் பயன்படுத்த முடியும்.
index.js கோப்பு
index.js ஒரு செயல்பாட்டு தயாரிப்பு மற்றும் மாறிகள் x மற்றும் y ஆகியவற்றை வரையறுக்கிறது:
ஏற்றுமதி செயல்பாடு தயாரிப்பு ( a, b ) {திரும்ப அ * பி ;
}
ஏற்றுமதி நிலையான = 10 ;
ஏற்றுமதி நிலையான மற்றும் = 'டெய்லர்'
file.js
index.js கோப்பின் செயல்பாடுகளை file.js என பெயரிடப்பட்ட மற்ற js கோப்பில் பயன்படுத்தலாம். File.js இது போல் தெரிகிறது:
இறக்குமதி { தயாரிப்பு, x, y } இருந்து './index.js' ;பணியகம். பதிவு ( தயாரிப்பு ( 10 , 5 ) ) ; // 50ஐக் காண்பிக்கும்
பணியகம். பதிவு ( எக்ஸ் ) ; // 10 ஐக் காண்பிக்கும்
பணியகம். பதிவு ( மற்றும் ) ; // 'டெய்லர்' காண்பிக்கும்
வெளியீடு
ES6 இறக்குமதி ஏற்றுமதி தொகுதியைப் பயன்படுத்தி உலாவி சூழலில் 'தேவை வரையறுக்கப்படவில்லை' என்ற பிழை எவ்வாறு அகற்றப்படலாம் என்பதை பின்வரும் வெளியீடு காட்டுகிறது:
வழக்கு 2: Node.js இல் பணிபுரியும் போது பிழை
Package.json கோப்பில், வகை சொத்தை மதிப்பு தொகுதியுடன் அமைப்பது இந்த பிழையைப் பெறுகிறது. .mjs நீட்டிப்புடன் கோப்பில் தேவை() செயல்பாடு பயன்படுத்தப்பட்டாலும் இது நிகழலாம்.
தொகுதிக்கு அமைக்கப்பட்டுள்ள வகைப் பண்புகளை நீக்கும் போது, .mjs என்ற நீட்டிப்புடன் கூடிய எந்தக் கோப்பையும் .js என மறுபெயரிடும்போது இந்தப் பிழை நீக்கப்படும்.
//package.json{
// தேவை() ஐப் பயன்படுத்த தொகுதிக்கு அமைக்கப்பட்ட வகை சொத்தை அகற்றவும்
'வகை' : 'தொகுதி' ,
}
index.js கோப்பு
index.js கோப்பு ஒரு செயல்பாட்டை 'தயாரிப்பு' மற்றும் மாறிகள் x மற்றும் y ஆகியவற்றை மாறி நோக்கத்துடன் வரையறுக்கிறது. index.js கோப்பு எப்படி இருக்கும் என்பது இங்கே:
செயல்பாட்டு தயாரிப்பு ( a, b ) {திரும்ப அ * பி ;
}
உலகளாவிய. எக்ஸ் = 13 ;
உலகளாவிய. மற்றும் = 'விரைவான' ;
தொகுதி. ஏற்றுமதி செய்கிறது = {
தயாரிப்பு,
} ;
file.js
இது தேவை() முக்கிய சொல்லைப் பயன்படுத்தி JS கோப்பு index.js இலிருந்து செயல்பாட்டுத் தயாரிப்பைப் பெறுகிறது. file.js கோப்பு இப்படி இருக்கும்:
நிலையான { தயாரிப்பு } = தேவை ( './index.js' ) ;பணியகம். பதிவு ( தயாரிப்பு ( 10 , 9 ) ) ; // 90ஐக் காண்பிக்கும்
பணியகம். பதிவு ( எக்ஸ் ) ; // 13 ஐக் காண்பிக்கும்
பணியகம். பதிவு ( மற்றும் ) ; // 'ஸ்விஃப்ட்' காண்பிக்கும்
வெளியீடு
Package.json கோப்பிலிருந்து தொகுதிக்கு அமைக்கப்பட்ட வகையின் சொத்தை அகற்றுவதன் மூலம் “தேவை இல்லை” என்ற பிழை எவ்வாறு தீர்க்கப்படும் என்பதை வெளியீடு காட்டுகிறது:
நினைவில் கொள்ள வேண்டியவை
- ஒரு தொகுதியை இறக்குமதி செய்ய ES6 தொகுதி தொடரியல் தொகுதி கோப்பின் நீட்டிப்பைப் பற்றி குறிப்பிட்டதாக இருக்க வேண்டும். ஜாவாஸ்கிரிப்ட் அதன் சரியான செயலாக்கத்திற்கான கோப்பு வகையை அறிந்திருக்க வேண்டும்.
- ES6 தொகுதியை தேவை() செயல்பாட்டுடன் ஒரே நேரத்தில் பயன்படுத்த முடியாது.
முடிவுரை
உலாவியில் ES6 தொகுதி தொடரியல் பயன்படுத்தி, 'தேவை வரையறுக்கப்படவில்லை' என்ற சிக்கலைத் தீர்க்கிறது அல்லது இல்லையெனில் குறியீடு துணுக்கை Node.js இல் இயக்க வேண்டும். தேவை() செயல்பாட்டை உலாவியில் பயன்படுத்தும்போது பிழை ஏற்படுகிறது. 'தேவை வரையறுக்கப்படவில்லை' சிக்கலை ஒரு உதாரணத்துடன் எவ்வாறு தீர்க்கலாம் என்பதை இந்தக் கட்டுரை விவாதித்தது.