अपने Mac पर किसी प्रोजेक्ट द्वारा अपेक्षित Node.js संस्करण का पता लगाने के लिए, Terminal में सक्रिय संस्करण की जाँच करने से पहले उसकी संस्करण फ़ाइलों और कॉन्फ़िगरेशन का निरीक्षण करें। .nvmrc से शुरुआत करें, फिर volta और engines सेटिंग्स के लिए package.json की जाँच करें। इन संकेतों के अलग-अलग अर्थ होते हैं: कुछ किसी टूल के लिए एक निश्चित संस्करण तय करते हैं, जबकि अन्य एक अनुकूलता सीमा (compatibility range) का वर्णन करते हैं।

1. प्रोजेक्ट फ़ोल्डर को Terminal में खोलें

Finder में, प्रोजेक्ट फ़ोल्डर ढूँढें। उस पर Control-क्लिक करें और यदि विकल्प उपलब्ध हो तो New Terminal at Folder चुनें; अन्यथा Terminal खोलें और cd की मदद से फ़ोल्डर में नेविगेट करें। आप cd टाइप करने के बाद Finder से फ़ोल्डर को Terminal विंडो में ड्रैग कर सकते हैं, फिर Return दबाएँ। इससे ऐसे पाथ को गलत टाइप करने से बचा जा सकता है जिसमें स्पेस होते हैं।

प्रोजेक्ट डायरेक्टरी से ये केवल-पढ़ने योग्य (read-only) कमांड चलाएँ:

ls -a
grep -nE '"(engines|volta)"|"node"' package.json .nvmrc

ls -a में .nvmrc जैसी छिपी हुई फ़ाइलें भी शामिल होती हैं। grep मौजूदा फ़ाइलों से मेल खाने वाली पंक्तियाँ प्रिंट करता है; यदि कोई फ़ाइल मौजूद नहीं है, तो यह उस फ़ाइल के लिए एक एरर प्रिंट कर सकता है, जिसका अर्थ यह नहीं है कि प्रोजेक्ट खराब है। किसी विशेष फ़ाइल का अधिक विस्तार से निरीक्षण करने के लिए, फ़ाइल मौजूद होने पर sed -n '1,160p' package.json या sed -n '1,20p' .nvmrc का उपयोग करें। ये कमांड टेक्स्ट प्रदर्शित करते हैं; वे प्रोजेक्ट में कोई बदलाव नहीं करते हैं।

2. .nvmrc को वर्शन-मैनेजर निर्देश के रूप में पढ़ें

यदि आपको .nvmrc मिलती है, तो इसकी सामग्री पढ़ें। 20.16.0 जैसा मान यह दर्शाता है कि प्रोजेक्ट nvm के उपयोगकर्ताओं के लिए उस Node.js संस्करण को निर्दिष्ट करता है। nvm 20 या lts/* जैसे संस्करण चयनकर्ताओं (version selectors) को भी स्वीकार करता है, इसलिए हो सकता है कि फ़ाइल किसी एक निश्चित पैच रिलीज़ की पहचान न करे। nvm दस्तावेज़ कहता है कि इसके कमांड प्रोजेक्ट डायरेक्टरी या पैरेंट डायरेक्टरी में .nvmrc ढूंढ सकते हैं, और बिना किसी संस्करण के nvm use उपलब्ध होने पर फ़ाइल का उपयोग करता है। nvm README: .nvmrc

macOS पर, जाँचें कि क्या nvm उपलब्ध है और यह इस डायरेक्टरी में क्या रिज़ॉल्व करता है:

command -v nvm
nvm use
node --version

जब वर्तमान शेल में nvm लोड होता है, तो command -v nvm को nvm प्रिंट करना चाहिए। यदि कमांड अनुपलब्ध है, तो यह न मानें कि .nvmrc अमान्य है; यदि आपके पास nvm इंस्टॉल या लोड नहीं है, तब भी यह फ़ाइल प्रोजेक्ट के चयन को प्रलेखित कर सकती है। nvm use फ़ाइल में मौजूद संस्करण का चयन करता है यदि वह इंस्टॉल है; यदि यह अनुपलब्ध है, तो nvm आपसे इसे इंस्टॉल करने के लिए कह सकता है। इंस्टॉलेशन केवल तभी चलाएँ जब आप अपने Mac में उस Node संस्करण को जोड़ना चाहते हों।

3. Volta और अनुकूलता सीमाओं के लिए package.json की जाँच करें

एक टॉप-लेवल volta ऑब्जेक्ट देखें। उदाहरण के लिए:

"volta": {
  "node": "20.16.0"
}

यह Volta-प्रबंधित प्रोजेक्ट्स के लिए एक Node संस्करण पिन है। Volta प्रलेखित करता है कि volta pin चयनित टूल संस्करणों को package.json में संग्रहीत करता है, और Volta Node कमांड्स को प्रोजेक्ट संस्करण पर रूट करता है। Understanding Volta यदि आप Volta का उपयोग करते हैं, तो प्रोजेक्ट डायरेक्टरी से node --version यह दिखा सकता है कि टूलचेन कौन सा संस्करण चलाता है; Volta के बिना, यह ऑब्जेक्ट प्रोजेक्ट मेटाडेटा ही रहता है, macOS Terminal के लिए कोई कमांड नहीं।

engines प्रॉपर्टी का भी निरीक्षण करें, जिसे आमतौर पर इस तरह लिखा जाता है:

"engines": {
  "node": ">=18 <23"
}

यह एक अनुकूलता सीमा (compatibility range) देता है, जरूरी नहीं कि वही संस्करण जो डेवलपर्स ने इंस्टॉल किया हो। npm का दस्तावेज़ engines.node का वर्णन यह निर्दिष्ट करने के रूप में करता है कि कोई पैकेज किन Node संस्करणों के साथ काम करता है; जब तक engine-strict सक्षम न हो, npm इसे केवल सलाह के रूप में मानता है और डिपेंडेंसी इंस्टॉलेशन के दौरान केवल चेतावनी दे सकता है। npm package.json documentation एक विस्तृत सीमा का अर्थ है कि प्रोजेक्ट अनुमत संस्करणों में अनुकूलता का दावा करता है; यह किसी एक सटीक अपेक्षित संस्करण को स्थापित नहीं करता है।

4. फ़ाइलों की तुलना करें और परस्पर विरोधी संकेतों का समाधान करें

सटीक .nvmrc या Volta पिन को किसी विशेष टूल-प्रबंधित संस्करण का सबसे मजबूत संकेत मानें। engines.node को अनुकूलता की बाधा (compatibility constraint) मानें। यदि फ़ाइलों में असहमति है—उदाहरण के लिए, .nvmrc 18 कहता है लेकिन engines.node को >=20 की आवश्यकता है—तो बिना सोचे-समझे किसी एक को न चुनें। फ़ाइलें पुरानी हो सकती हैं, विभिन्न टूल्स के लिए काम कर सकती हैं, या हाल ही में हुए बदलाव को दर्शा सकती हैं। प्रोजेक्ट की README और सेटअप निर्देशों की जाँच करें, फिर मेंटेनर्स या टीम से पूछें कि वे योगदानकर्ताओं (contributors) से किस फ़ाइल का पालन करने की अपेक्षा करते हैं।

प्रोजेक्ट्स अन्य वर्शन मैनेजर्स द्वारा उपयोग की जाने वाली फ़ाइलों में या CI कॉन्फ़िगरेशन में भी संस्करणों को परिभाषित कर सकते हैं। यदि .nvmrc और package.json में कोई उपयोगी उत्तर नहीं है, तो ls -a के साथ दृश्यमान प्रोजेक्ट फ़ाइलों को खोजें और सेटअप दस्तावेज़ तथा वर्कफ़्लो कॉन्फ़िगरेशन का निरीक्षण करें। एक CI फ़ाइल स्वचालित बिल्ड्स के लिए उपयोग किए जाने वाले संस्करण को दिखा सकती है, लेकिन वह स्थानीय डेवलपर सेटअप से भिन्न हो सकती है; इसे प्रोजेक्ट की आवश्यकता मानने से पहले संदर्भ की पुष्टि करें।

5. सत्यापित करें कि आपका Mac वास्तव में कौन सा Node संस्करण उपयोग कर रहा है

प्रोजेक्ट के निर्देश की पहचान करने के बाद, सक्रिय रनटाइम के साथ इसकी तुलना करें:

node --version
command -v node

पहला कमांड सक्रिय Node संस्करण की रिपोर्ट करता है; दूसरा आपके शेल के PATH के माध्यम से चयनित निष्पादन योग्य पाथ (executable path) दिखाता है। ये आपके वर्तमान Terminal परिवेश का वर्णन करते हैं, अपने आप में प्रोजेक्ट की आवश्यकता का नहीं। nvm के साथ, जाँचने से पहले प्रोजेक्ट डायरेक्टरी से nvm use चलाएँ। Volta के साथ, उसी डायरेक्टरी से जाँच चलाएँ ताकि इसकी प्रोजेक्ट सेटिंग्स लागू हो सकें। यदि रिपोर्ट किया गया संस्करण अभी भी पिन से भिन्न है, तो हो सकता है कि संबंधित मैनेजर इस शेल में इंस्टॉल, लोड या node निष्पादन योग्य फ़ाइल को नियंत्रित न कर रहा हो।

व्यावहारिक उत्तर दोनों पक्षों को पढ़ने से आता है: रिपॉजिटरी की संस्करण घोषणा आपको बताती है कि वह क्या मांगती है, जबकि node --version आपको बताता है कि आपका Mac वर्तमान में क्या चला रहा है। यदि वे मेल नहीं खाते हैं, तो स्थानीय परिणामों पर भरोसा करने से पहले मैनेजर या प्रोजेक्ट निर्देश का समाधान करें।

स्रोत