Npm का उपयोग करते समय "ऐसी कोई फ़ाइल या निर्देशिका नहीं" त्रुटि


34

मैंने यहां दिए गए निर्देशों का उपयोग करके नोड और एनपीएम स्थापित किया है

मैं नोड का सफलतापूर्वक उपयोग करने में सक्षम था। हालाँकि, जैसा कि मैं "फॉर्मिडेबल" ​​नोड मॉड्यूल को स्थापित करने का प्रयास करता हूं, मुझे निम्न त्रुटि मिलती है:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

जब मैं एक which npmनिम्न आउटपुट प्राप्त करता हूं:

$which npm
/usr/local/bin/npm

यहाँ npm के साथ क्या गलत है, इसका कोई सुराग नहीं है - मैं इसे कैसे ठीक कर सकता हूं इस पर कोई विचार?


उबंटू पूछने के लिए आपका स्वागत है! मैं देख रहा हूँ कि आपने Node को स्थापित किया है /usr/local/bin/पैकेज के रूप में आप निर्देशों में इस्तेमाल किया आप ऐसा नहीं करने के लिए जुड़े। मुझे लगता है कि आपने स्रोत से एक और नोड स्थापित किया है। कृपया पूरी कहानी बताएं।
gertvdijk

@gertvdijk खैर, शुरू में स्थापित नोड 0.8.14 था। मैं इसे 0.8.18 में अपग्रेड करना चाहता था। मैं तब भागा $sudo apt-get remove --purge nodejs npmलेकिन यह काम नहीं आया। node --version0.8.18 को स्थापित करने के बाद भी 0.8.14 दिखाया गया। तो, क्या मैंने किया था एक पोस्ट जो मैं अब नहीं मिल सकता है का पालन करें - यह मूल रूप से करने के निर्देश दिए हैं which node, जिसके बाद rm -r /usr/local/bin/...कि निर्देशिका के अंतर्गत मूल रूप से कुछ नोड संबंधित फाइलों -। अब, इसके बाद, मैंने नोड को फिर से स्थापित किया और यह अद्यतन संस्करण था। इसका काम ठीक है, लेकिन npm नहीं है।
user109187

जब आप स्रोत से स्थापित करते हैं तो हाँ यही होता है। यह आपके पैकेज प्रबंधन और आपको एक उपयोगकर्ता के रूप में भ्रमित करेगा। कृपया सॉफ्टवेयर को केवल संकुल के रूप में स्थापित करें जब तक कि आपको पता न हो कि आप क्या कर रहे हैं। आपके द्वारा पूर्व में स्थापित संस्करण को ठीक से अनइंस्टॉल करने के लिए आपके द्वारा उपयोग की जाने वाली स्क्रिप्ट के साथ स्थापना रद्द निर्देशों का उपयोग करें। और अधिक जानकारी प्रदान करने के लिए कृपया अपने प्रश्न को संपादित करें। यह एक प्रश्नोत्तर साइट है, चर्चा मंच नहीं है, आप देखें? :)
gertvdijk

@gertvdijk मुझे वह पोस्ट मिली, जो फ़ाइलों को मैन्युअल रूप से हटाने का निर्देश देती है - stackoverflow.com/a/5917184/1907800 । यहाँ पथ है / usr / बिन / नोड
user109187

जवाबों:


51

@Gertvdijk संकेत लेते हुए, मैंने स्क्रिप्ट का उपयोग करते हुए NPM की स्थापना रद्द की:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(जो यहां पाया जा सकता है )

उपरोक्त प्रदर्शन करने के बाद भी, मुझे एक और त्रुटि मिली:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

इसलिए, मैं hash -rटर्मिनल में चला गया ( एनपीएम वॉट रन रन अपग्रेड के तहत मिले निर्देशों के अनुसार ) और वॉयला - यह काम कर गया। अब काम करता है एनपीएम!


1
यहां एकमात्र उपयोगी चीज की खोज की गई थी hash, जिसका उपयोग केवल दूसरे नोड / एनपीएम को इंगित करने के लिए किया जा सकता है (क्या होगा यदि मैं नोड के एक से अधिक संस्करण के साथ काम करना चाहता हूं?)
उपयोगकर्ता 309383

सुंदर अतिथि उपयोगकर्ता।
LM_Fielding

4
हैश-आर ने मुझे बचा लिया
diogo.abdalla

क्या करता hashहै !?
चेंजुंग किम

11

उबंटू और कुछ लिनक्स वितरण नोड के दुभाषिया को स्थापित करते हैं /usr/bin/nodejs, और नहीं /usr/local/bin/node

आप इस मुद्दे को हल कर सकते हैं nodejs-legacyजो उस पैकेज को स्थापित कर रहा है जो इससे एक सिमलिंक बनाता /usr/bin/nodejsहै /usr/bin/node

समाधान:

sudo apt-get install nodejs-legacy

संदर्भ: नोडज-लीगेसी पैकेज


1
लगता है nodejs-legacyअब मौजूद नहीं है।
मार्टीन डी ला फूएंते

2

ऐसा प्रतीत होता है कि आपने कुछ समय पहले स्रोत से एक और नोड संस्करण स्थापित किया है। यह उस /usr/local/binमार्ग से इंगित होता है जहां यह अब स्थापित किया गया प्रतीत होता है।

  1. स्रोत से आपके द्वारा इंस्टॉल की गई स्थापना रद्द करें। ऐसा करने के लिए स्रोत के साथ मिले निर्देशों को देखें। सॉफ़्टवेयर स्क्रिप्ट की स्थापना रद्द करने के तरीके पर कोई एकल तरीका नहीं है जो आपके सिस्टम के पैकेज प्रबंधन के साथ काम नहीं करता है।
  2. उन पैकेजों को स्थापित करें जिनके साथ आप अपने प्रश्न में जुड़े निर्देशों में सूचीबद्ध हैं।
  3. सत्यापित करें कि which npmअब /usr/binस्थापना पथ के रूप में सूचीबद्ध करता है।

सामान्य तौर पर आपको कभी भी स्रोत से पैकेज स्थापित नहीं करना चाहिए। और यदि आप ऐसा करते हैं, तो कृपया परिणामों से अवगत रहें क्योंकि आप पैकेज प्रबंधन को यहां ओवरराइड कर रहे हैं, यह इससे भ्रमित हो जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.