Node.js ट्रबलशूटिंग
यह दस्तावेज़ ServBay लोकल डिवेलपमेंट पर्यावरण में Node.js पैकेजों का इस्तेमाल करते वक्त डेवलपर्स को पेश आ सकने वाली आम समस्याओं के समाधान में आपकी मदद करता है।
Node.js/npm/pnpm/yarn कमांड वर्शन नहीं मिल रहा या फाइल नहीं मिली
जब आप ServBay में Node.js, npm, pnpm या yarn का इस्तेमाल कर रहे हैं और आपको नीचे जैसी कोई एरर नजर आती है, तो इसका मतलब है कि सिस्टम, आपके द्वारा प्रयुक्त किए जा रहे विशिष्ट वर्शन का Node.js एक्जीक्यूटेबल नहीं ढूंढ पा रहा है:
bash
Warning: Specified Node.js version '22' for 'node' not found.
If this is not your intention, please delete the 'NODE_VERSION' configuration
from the '.servbay.config' file in the current directory.
1
2
3
2
3
आम तौर पर ऐसा तब होता है जब आपके द्वारा चुना गया Node.js वर्शन अभी तक ServBay में इंस्टॉल नहीं है। या आप nvm या homebrew जैसे किसी अन्य टूल से इंस्टॉल किए Node.js वर्शन का उपयोग करना चाहते हैं, लेकिन पर्यावरण सेटिंग्स की वजह से ServBay उसे ठीक से नहीं ढूंढ पाता।
सुझाव
ServBay इंस्टॉल करने के बाद सिस्टम, ServBay के Script Alias को कॉन्फ़िगर करता है, ताकि सबसे पहले ServBay द्वारा इंस्टॉल किए Node.js पैकेजों को प्राथमिकता दी जा सके। अगर ServBay में वह वर्शन नहीं मिलता, तो यह बारी-बारी से पहले nvm से इंस्टॉल किए डिफ़ॉल्ट वर्शन और फिर homebrew वर्शन का प्रयास करता है। अगर ये सभी नहीं मिलते, तभी ऊपर जैसी एरर आती है।
कारण विश्लेषण:
- जिन Node.js वर्शन का उपयोग आप करना चाहते हैं, वह ServBay ऐप में इंस्टॉल नहीं है।
- सिस्टम में nvm या homebrew इंस्टॉल है और आप उसके प्रबंधित Node.js वर्शन का उपयोग करना चाहते हैं, लेकिन shell वातावरण कनफिग (खासकर PATH या NVM_BIN एनवायरमेंट वेरिएबल्स) में गड़बड़ी की वजह से ServBay का fallback मैकेनिज़्म इन बाहरी इंस्टॉलेशन को नहीं ढूंढ पाता।
समाधान:
अगर आपने nvm इंस्टॉल कर रखा है और उसके जरिए Node.js वर्शन भी इंस्टॉल किए हैं लेकिन अभी भी यह एरर आ रही है, तो सबसे आम कारण आपके shell पर्यावरण में NVM_BIN वेरिएबल का न होना या गलत तरीके से सेट होना है। nvm अपनी सही स्थापना के समय इस वेरिएबल को खुद कॉन्फ़िगर करता है, जो nvm द्वारा इंस्टॉल किए Node.js एक्जीक्यूटेबल्स के फोल्डर का पाथ है—यह nvm के सुचारु काम के लिए जरूरी है।
आपको केवल अपने shell कॉन्फ़िग फाइल (जैसे ~/.zshrc
, ~/.bash_profile
आदि) में nvm की संबंधित सेटिंग को जांचना और सही करके यह सुनिश्चित करना है कि NVM_BIN वेरिएबल सही तरीके से सेट और एक्सपोर्ट हुआ है। इसके बाद अपनी कॉन्फ़िग फाइल को फिर से लोड कर लें (source ~/.zshrc
चलाकर या टर्मिनल रीस्टार्ट करके)। ऐसा करने के बाद, ServBay का fallback मैकेनिज़्म nvm के Node.js वर्शन ढूंढ पाएगा।
अगर आपने nvm या homebrew का उपयोग नहीं किया या आप केवल ServBay द्वारा प्रबंधित Node.js वर्शन इस्तेमाल करना चाहते हैं, तो सुनिश्चित करें कि आपके द्वारा प्रयुक्त Node.js वर्शन ServBay ऐप के "पैकेज" इंटरफ़ेस में इंस्टॉल किया गया हो।
node-sass
जैसे npm पैकेज इस्तेमाल करते हुए आर्किटेक्चर सपोर्ट नहीं का संदेश
Apple Silicon (M1/M2/M3/M4 आदि Arm64 आर्किटेक्चर) चिप का उपयोग करने वाले macOS यूजर्स को कुछ पुराने या नेटिव मॉड्यूल पर निर्भर npm पैकेज (जैसे node-sass
) इस्तेमाल करते वक्त "Unsupported architecture (arm64)" जैसी एरर मिल सकती है। इसका कारण यह है कि ऐसे पुराने पैकेज आमतौर पर केवल x86_64 आर्किटेक्चर के लिए ही बाइनरी या कॉम्पाइल्ड फाइल देते थे।
bash
ERROR: Module Error (from ./node_modules/sass-loader/dist/cjs.js):
Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Node.js 14.x
For more information on which environments are supported
please see:
https://github.com/sass/node-sass/releases/tag/v4.14.1
1
2
3
4
5
2
3
4
5
कारण विश्लेषण:
कुछ npm पैकेजों में C++ या अन्य नेटिव कोड की जरूरत पड़ती है, जिन्हें खास cpu आर्किटेक्चर के लिए कॉम्पाइल किया जाता है। पुराने वर्शन के इन पैकेजों के पास Arm64 (Apple Silicon) के लिए कॉम्पाइल्ड बाइनरी या सपोर्ट नहीं होता।
समाधान:
आधुनिक तथा Arm64 सपोर्ट वाले विकल्पों का इस्तेमाल करें (अनुशंसित):
सबसे अच्छा समाधान है कि आप पुराने, सीमित और अब मेंटेन न हो रहे पैकेज जैसे
node-sass
की जगह आधुनिक, पूरी तरह से Arm64 सपोर्ट वाले विकल्प अपनाएं। उदाहरण स्वरूप,node-sass
की बजायsass
पैकेज, जो आजकल आधुनिक फ्रंटएंड प्रोजेक्ट्स और टूलचेन्स में अपनाया जा रहा है।bashnpm uninstall node-sass npm install --save-dev sass
1
2ServBay में x86_64 आर्किटेक्चर के Node.js इंस्टॉल करके Rosetta 2 के जरिए चलाएं (अनुशंसित नहीं):
ServBay में x86_64 आर्किटेक्चर के Node.js पैकेज इंस्टॉल करने का विकल्प मौजूद है। Apple Silicon Macs पर यह macOS के Rosetta 2 ट्रांसलेशन लेयर के जरिए Node.js और x86_64 नेटिव मॉड्यूल्स को चलाने देता है। आप ServBay के "पैकेज" पैनल में x86_64 वर्शन इंस्टॉल कर सकते हैं।
द्यान दें: इसे कभी भी लंबे समय तक उपयोग के लिए न चुनें, क्योंकि यह Rosetta 2 एमुलेशन पर निर्भर करता है जिससे प्रदर्शन प्रभावित हो सकता है और Arm64 के मुकाबले संगतता समस्याएँ भी आ सकती हैं। पहली रणनीति को प्राथमिकता दें।