Node.js प्रोग्राम में कमांड लाइन तर्क पारित करना

Node.js प्रोग्राम में कमांड लाइन तर्क पारित करना
Node.js प्रोग्राम में कमांड लाइन तर्क पारित करना

कमांड लाइन तर्कों के साथ Node.js सर्वर प्रारंभ करना

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

उपयोगकर्ता इनपुट या कॉन्फ़िगरेशन सेटिंग्स के आधार पर आपके सर्वर के व्यवहार को अनुकूलित करने के लिए अपने Node.js कोड में इन तर्कों तक पहुंचने का तरीका समझना महत्वपूर्ण है। यह मार्गदर्शिका आपको दिखाएगी कि Node.js प्रोग्राम में कमांड लाइन तर्कों को प्रभावी ढंग से कैसे पारित और पुनः प्राप्त किया जाए।

आज्ञा विवरण
process.argv कमांड लाइन तर्कों वाली एक सरणी Node.js प्रक्रिया को पारित की गई।
require('http') वेब सर्वर बनाने के लिए अंतर्निहित HTTP मॉड्यूल आयात करता है।
require('url') यूआरएल रिज़ॉल्यूशन और पार्सिंग के लिए अंतर्निहित यूआरएल मॉड्यूल आयात करता है।
require('fs') फ़ाइल सिस्टम के साथ इंटरैक्ट करने के लिए अंतर्निहित फ़ाइल सिस्टम मॉड्यूल को आयात करता है।
require('path') फ़ाइल और निर्देशिका पथों के साथ काम करने के लिए अंतर्निहित पथ मॉड्यूल आयात करता है।
url.parse() URL स्ट्रिंग को URL गुणों वाले किसी ऑब्जेक्ट में पार्स करता है।
path.join() एक सीमांकक के रूप में प्लेटफ़ॉर्म-विशिष्ट विभाजक का उपयोग करके सभी दिए गए पथ खंडों को एक साथ जोड़ता है।
fs.readFile() किसी फ़ाइल की संपूर्ण सामग्री को एसिंक्रोनस रूप से पढ़ता है।

Node.js कमांड लाइन तर्कों को समझना

प्रदान की गई स्क्रिप्ट में, हम दर्शाते हैं कि Node.js प्रोग्राम में कमांड लाइन तर्कों को कैसे पास और एक्सेस किया जाए। सर्वर स्क्रिप्ट कई Node.js मॉड्यूल का उपयोग करती है, जिनमें शामिल हैं require('http'), require('url'), require('fs'), और require('path'). ये मॉड्यूल क्रमशः एक सरल HTTP सर्वर बनाने, यूआरएल को पार्स करने, फ़ाइल सिस्टम को संभालने और फ़ाइल पथों के साथ काम करने के लिए आवश्यक हैं। जब सर्वर को एक कमांड के साथ शुरू किया जाता है जैसे node server.js folder, फ़ोल्डर तर्क को स्क्रिप्ट के माध्यम से पास किया जाता है process.argv सरणी. इस सरणी में सभी कमांड लाइन तर्क शामिल हैं process.argv[0] 'नोड' होना, process.argv[1] स्क्रिप्ट पथ होना, और बाद के तत्व अतिरिक्त तर्क होना।

स्क्रिप्ट पहले जाँचती है कि फ़ोल्डर तर्क प्रदान किया गया है या नहीं process.argv[2]. यदि नहीं, तो यह एक त्रुटि संदेश लॉग करता है और बाहर निकल जाता है। यदि तर्क मौजूद है, तो सर्वर का उपयोग करके बनाया जाता है http.createServer(). सर्वर अनुरोधित यूआरएल को पढ़ता है, इसे दिए गए फ़ोल्डर पथ के साथ जोड़ता है path.join(), और का उपयोग करके संबंधित फ़ाइल को पढ़ने का प्रयास करता है fs.readFile(). यदि फ़ाइल मिल जाती है, तो यह फ़ाइल सामग्री को प्रतिक्रिया के रूप में भेजती है; अन्यथा, यह 404 त्रुटि लौटाता है। यह दृष्टिकोण सुनिश्चित करता है कि सर्वर निर्दिष्ट फ़ोल्डर से फ़ाइलों को प्रस्तुत करता है, यह दर्शाता है कि सर्वर व्यवहार को गतिशील रूप से अनुकूलित करने के लिए कमांड लाइन तर्कों को कैसे संभालना है।

Node.js में कमांड लाइन तर्क तक पहुँचना

Node.js के साथ जावास्क्रिप्ट

// server.js
const http = require('http');
const url = require('url');
const fs = require('fs');
const path = require('path');

// Get the folder from the command line arguments
const folder = process.argv[2];

// Check if the folder argument is provided
if (!folder) {
  console.error('Please provide a folder path');
  process.exit(1);
}

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url);
  let pathname = path.join(folder, parsedUrl.pathname);

  fs.readFile(pathname, (err, data) => {
    if (err) {
      res.statusCode = 404;
      res.end(`File not found: ${pathname}`);
    } else {
      res.statusCode = 200;
      res.end(data);
    }
  });
});

server.listen(3000, () => {
  console.log('Server listening on port 3000');
  console.log(`Serving files from ${folder}`);
});

एक विशिष्ट फ़ोल्डर के साथ सर्वर लॉन्च करना

कमांड लाइन

# Launch the server with the specified folder
$ node server.js path/to/your/folder

Node.js में कमांड लाइन तर्कों की व्याख्या

Node.js के साथ जावास्क्रिप्ट

// process.argv is an array containing command line arguments
// process.argv[0] is 'node'
// process.argv[1] is the path to the script being executed
// process.argv[2] and beyond are the additional command line arguments
console.log(process.argv);

/* Output when running 'node server.js folder':
  [
    '/usr/local/bin/node',
    '/path/to/server.js',
    'folder'
  ]
*/

Node.js में कमांड लाइन तर्कों पर विस्तार

कमांड लाइन तर्कों को पारित करने और पुनर्प्राप्त करने की बुनियादी बातों से परे, Node.js में विचार करने के लिए अन्य उन्नत तकनीकें और सर्वोत्तम प्रथाएं हैं। ऐसी ही एक तकनीक में पुस्तकालयों का उपयोग करके कमांड लाइन तर्कों को पार्स करना शामिल है minimist या yargs. ये लाइब्रेरी तर्कों को संभालने के लिए अधिक उपयोगकर्ता-अनुकूल तरीका प्रदान करती हैं, जिससे आप विकल्पों को परिभाषित कर सकते हैं, डिफ़ॉल्ट मान सेट कर सकते हैं और आवश्यक तर्क लागू कर सकते हैं। उदाहरण के लिए, साथ minimist, आप किसी ऑब्जेक्ट में तर्कों को पार्स कर सकते हैं, जिससे उन तक पहुंच और प्रबंधन करना आसान हो जाता है। यह बड़े अनुप्रयोगों में विशेष रूप से उपयोगी हो सकता है जहां कमांड लाइन तर्क कॉन्फ़िगरेशन और व्यवहार में महत्वपूर्ण भूमिका निभाते हैं।

एक अन्य महत्वपूर्ण पहलू तर्कों के लिए विभिन्न डेटा प्रकारों को संभालना है। डिफ़ॉल्ट रूप से, सभी कमांड लाइन तर्कों को स्ट्रिंग के रूप में माना जाता है। जैसे पुस्तकालयों का उपयोग करना minimist या yargs, आप निर्दिष्ट कर सकते हैं कि किसी तर्क को संख्या, बूलियन या स्ट्रिंग के रूप में पार्स किया जाना चाहिए या नहीं। यह सुनिश्चित करता है कि आपका एप्लिकेशन तर्कों की सही व्याख्या करता है। इसके अतिरिक्त, ये लाइब्रेरी आपको तर्कों के लिए उपनाम सेट करने की अनुमति देती हैं, जिससे कमांड लाइन इंटरफ़ेस उपयोगकर्ताओं के लिए अधिक सहज हो जाता है। इन प्रथाओं को लागू करने से न केवल आपके Node.js अनुप्रयोगों की मजबूती में सुधार होता है बल्कि स्पष्ट और लचीली कमांड लाइन विकल्प प्रदान करके उपयोगकर्ता अनुभव भी बढ़ता है।

Node.js कमांड लाइन तर्कों के बारे में सामान्य प्रश्न

  1. मैं Node.js में कमांड लाइन तर्कों तक कैसे पहुँच सकता हूँ?
  2. आप इसका उपयोग करके कमांड लाइन तर्कों तक पहुंच सकते हैं process.argv सरणी.
  3. का क्या उपयोग है minimist कमांड लाइन तर्कों को संभालने में?
  4. minimist एक लाइब्रेरी है जो कमांड लाइन तर्कों को अधिक प्रबंधनीय ऑब्जेक्ट प्रारूप में पार्स करने में मदद करती है।
  5. क्या मैं कमांड लाइन तर्कों के लिए डिफ़ॉल्ट मान सेट कर सकता हूँ?
  6. हाँ, पुस्तकालय पसंद हैं yargs और minimist तर्कों के लिए डिफ़ॉल्ट मान सेट करने की अनुमति दें।
  7. मैं आवश्यक तर्क कैसे लागू कर सकता हूं?
  8. जैसे पुस्तकालयों का उपयोग करना yargs, आप परिभाषित कर सकते हैं कि कौन से तर्क आवश्यक हैं और यदि वे गायब हैं तो त्रुटि संदेश प्रदान करें।
  9. मैं कमांड लाइन तर्कों के लिए विभिन्न डेटा प्रकारों को कैसे संभालूं?
  10. जैसे पुस्तकालयों के साथ minimist, आप तर्क प्रकार निर्दिष्ट कर सकते हैं, जैसे संख्या, बूलियन, या स्ट्रिंग।
  11. तर्क उपनाम क्या हैं और वे कैसे उपयोगी हैं?
  12. तर्क उपनाम कमांड लाइन विकल्पों के लिए वैकल्पिक नाम हैं, जो सीएलआई को अधिक उपयोगकर्ता-अनुकूल बनाते हैं। आप जैसे पुस्तकालयों का उपयोग करके उपनाम सेट कर सकते हैं yargs.
  13. क्या अनेक तर्कों को एक में जोड़ना संभव है?
  14. हां, तर्क पार्सिंग लाइब्रेरी का उपयोग करके, आप कई तर्कों को जोड़ सकते हैं और उन्हें एकल कॉन्फ़िगरेशन ऑब्जेक्ट के रूप में संभाल सकते हैं।
  15. मैं कमांड लाइन तर्क पार्सिंग में त्रुटियों को कैसे संभालूं?
  16. पुस्तकालय पसंद हैं yargs उपयोगकर्ता के अनुकूल त्रुटि संदेशों को प्रदर्शित करने के लिए अंतर्निहित त्रुटि प्रबंधन तंत्र प्रदान करें।
  17. क्या मैं कमांड लाइन तर्कों के साथ पर्यावरण चर का उपयोग कर सकता हूँ?
  18. हाँ, Node.js अनुप्रयोगों को कॉन्फ़िगर करने के लिए पर्यावरण चर और कमांड लाइन तर्क दोनों का उपयोग करना आम बात है।

Node.js कमांड लाइन तर्कों पर अंतिम विचार

लचीले और गतिशील अनुप्रयोगों के निर्माण के लिए Node.js में कमांड लाइन तर्कों को कैसे पारित और एक्सेस किया जाए, यह समझना महत्वपूर्ण है। अंतर्निहित मॉड्यूल और तृतीय-पक्ष लाइब्रेरी का लाभ उठाकर, डेवलपर्स तर्कों को कुशलतापूर्वक संभाल सकते हैं, डिफ़ॉल्ट सेट कर सकते हैं और आवश्यकताओं को लागू कर सकते हैं। यह ज्ञान न केवल कोड की मजबूती में सुधार करता है बल्कि स्पष्ट और प्रबंधनीय कमांड लाइन विकल्प प्रदान करके उपयोगकर्ता अनुभव को भी बढ़ाता है। कॉन्फ़िगर करने योग्य और स्केलेबल एप्लिकेशन बनाने का लक्ष्य रखने वाले किसी भी Node.js डेवलपर के लिए इन तकनीकों में महारत हासिल करना एक मूल्यवान कौशल है।