एनवीएम नए टर्मिनल सत्र में नोड को "भूल" रखता है


544

ओएस एक्स में एक नया टर्मिनल सत्र का उपयोग करने पर, nvmनोड संस्करण और कुछ भी नहीं करने के लिए चूक को भूल जाता है:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

मुझे nvm use v.0.11.13हर सत्र में मारते रहना है :

         .nvm
     v0.11.12
->   v0.11.13

मैंने दोनों को brewस्थापित करने की कोशिश की है , साथ ही आधिकारिक स्थापना स्क्रिप्ट भी।

मेरा .profileकाढ़ा संस्करण के लिए:

#nvm
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh

और install.sh स्क्रिप्ट के लिए:

$ curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash

#nvm
export NVM_DIR="/Users/farhad/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

मैं क्या गलत कर रहा हूँ के लिए कोई सुराग?


1
बस इसे यहां जोड़ना चाहते हैं - सुनिश्चित करें कि आप से निर्यात करते हैं .bash_profileऔर आपका नहीं.bashrc
James111

जवाबों:


1181

कोशिश करो nvm alias default। उदाहरण के लिए:

$ nvm alias default 0.12.7

यह आपके शेल में डिफ़ॉल्ट नोड संस्करण सेट करता है। फिर सत्यापित करें कि परिवर्तन शेल विंडो को बंद करके, एक नया खोलने के बाद भी बना रहता है: node --version


11
क्या यह पहले से ही एनवीएम का काम नहीं है? बाद $ nvm alias default 0.11.13और $ nvm use 0.11.12, मैं node --version = 0.11.12। फिर भी, एक नए सत्र में, नोड फिर से चला गया है। डेबियन में, मेरे पास यह मुद्दा बिल्कुल नहीं है।
17

4
ठीक है, Ive एक टाइपो था nvm alias defaul X:। सही उपयोग के साथ यह वास्तव में काम करता है। तो वर्कफ़्लो nvm install Xतब होगा nvm alias default X, मुझे लगता है। मदद करने के लिए धन्यवाद!
frhd

21
मेरे पास एक ही मुद्दा था और यह इसलिए था क्योंकि मैं इसके NVM_DIRबाद निर्यात कर रहा था nvm.shNVM_DIRपहले निर्यात सुनिश्चित करें ।
मैक्सवेल 2022

11
ध्यान दें कि nvm alias defaultवर्तमान वातावरण के लिए नोड संस्करण सेट नहीं है, बस सभी नए लोगों के लिए।
एरिकोस्को

27
यदि वह काम नहीं करता है, में सुनिश्चित करें कि आपके .bash_profile(या .bashrcया जो कुछ भी) आप को संशोधित करने के लिए कुछ भी नहीं है PATHके बादsource xx/nvm.sh
goodmanship

85

nodeबाद में नोड संस्करण अपडेट के साथ डिफ़ॉल्ट उपनाम को अपडेट करने से बचने के लिए खुद को उपनाम।

nvm alias default node

2
! चेतावनी: संस्करण 'नोड' मौजूद नहीं है। डिफ़ॉल्ट -> नोड (-> एन / ए)?
हाउस 3272

6
किस बारे में node alias default stable?
पियरे हेनरी

1
मुझे नहीं लगता कि आप stableअब और उपयोग करना चाहते हैं। एनवीएम डॉक्स से: "स्थिर: यह उर्फ ​​पदावनत है, और केवल सही मायने में नोड v.12 और पूर्व के लिए लागू होता है। वर्तमान में, यह नोड के लिए एक उपनाम है।"
फेरिस

1
जो करने के लिए nodeयह डिफ़ॉल्ट करता है? वर्तमान शेल में एनवीएम द्वारा स्थापित और उपयोग किया गया नोड, या नोड के इंस्टॉलेशन पैकेज या होमब्रे आदि द्वारा सिस्टम पर संभवतः स्थापित नोड?
2540625

7
(NVM मेंटेनर यहाँ) node(और stableहै, लेकिन सब कुछ semver में जारी है, स्थिर है, ताकि अब की एक बेकार शब्द) उपलब्ध नवीनतम संस्करण का उपयोग करता। स्थानीय कमांड के लिए, नवीनतम स्थापित; दूरस्थ कमांड के लिए, नवीनतम उपलब्ध।
एलजेहर्ब

40

नवीनतम स्थिर संस्करण स्थापित करने के लिए:

nvm install stable

स्थिर संस्करण (विशेष संस्करण के बजाय) पर डिफ़ॉल्ट सेट करने के लिए:

nvm alias default stable

स्थापित संस्करणों को सूचीबद्ध करने के लिए:

nvm list

जैसा कि v6.2.0, यह कुछ इस तरह दिखेगा:

$ nvm list
         v4.4.2
->       v6.2.0
default -> stable (-> v6.2.0)
node -> stable (-> v6.2.0) (default)
stable -> 6.2 (-> v6.2.0) (default)
iojs -> N/A (default)

इसने बहुत अच्छा काम किया और उपयोग करने का सुझाव nvm listउपयोगकर्ताओं को यह कल्पना करने में मदद करता है कि उनके संस्करण के साथ क्या हो रहा है। धन्यवाद!
सोलविटिग

30

मेरे मामले में, एक और कार्यक्रम में PATHबदलाव किए गए थे.bashrc

यदि nvm के आरंभीकरण के PATH बाद दूसरे प्रोग्राम में परिवर्तन हुआ , तो nvm के PATHपरिवर्तन को भुला दिया जाएगा, और हमें सिस्टम नोड हमारे PATH(या कोई नोड) पर नहीं मिलेगा ।

समाधान के लिए nvm सेटअप को नीचे की ओर ले जाना था.bashrc

### BAD .bashrc ###

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

समाधान:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

# NVM initialisation
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm

(यह CentOS पर बैश 4.2.46 के साथ था। यह मुझे बैश में बग की तरह लगता है, लेकिन मुझे गलत माना जा सकता है।)


1
इससे मुझे मदद मिली! डिफ़ॉल्ट अटक गया था।
रेडसंड्रो

1
इस आदमी को एक पदक दो! NVM_DIR के निर्यात के बाद मुझे अपने zshrc में अन्य * rc फ़ाइलों की अतिरिक्त लोडिंग हुई, जिससे मुझे पागल कर दिया। धन्यवाद!
बॉबीटैबल्स

धन्यवाद! यह मुझे बोनर्स चला रहा था।
पेड़ों

27

nvm PATH वैरिएबल को बदलकर अपना काम करता है, इसलिए आपको यह सुनिश्चित करने की जरूरत है कि आप nvm.sh स्क्रिप्ट को सोर्स करने के बाद अपने पैट को किसी और चीज में नहीं बदल रहे हैं।

मेरे मामले में, nvm.sh को .bashrc में बुलाया जा रहा था, लेकिन तब PATH वैरिएबल को .bash_profile में अपडेट किया जा रहा था, जिससे nvm नोड से पहले सिस्टम नोड को खोजने के लिए मेरे सत्र का कारण बना।


1
मैं इसका निरीक्षण कैसे कर सकता हूं? मुझे संदेह है कि यह मामला है।
माइल्ड फज

यह मेरा मामला था धन्यवाद! मैं अपने .zshrc फ़ाइल पर शीर्ष पर निर्यात सेट कर रहा था, बस इसे नीचे तक ले जाऊं और समस्या हल हो गई थी
एलेजांद्रो सिल्वा

यह मेरा मामला था। सॉल्यूशन को NVM ~ / .bash_profile प्रविष्टि को फ़ाइल + सेट के अंत में nvm alias defaultऔर nvm useउस संस्करण में ले जाना था जिसकी मुझे आवश्यकता थी।
यूजीन टार्टाकोवस्की

मेरे लिए यही समाधान था। निम्नलिखित को नीचे ले गए .bashrc: export NVM_DIR="$HOME/.nvm"तब. "/usr/local/opt/nvm/nvm.sh"
asmiller

10

शीर्ष रेटेड समाधान मेरे लिए काम नहीं करते थे। मेरा समाधान नीचे है:

  1. पूरी तरह से homebrew का उपयोग कर nvm की स्थापना रद्द करें:brew uninstall nvm
  2. पुनर्स्थापित brew install nvm
  3. टर्मिनल में, नीचे दिए गए चरणों का पालन करें (होमबॉव के माध्यम से एनवीएम स्थापित करते समय ये भी सूचीबद्ध हैं):

    mkdir ~ / .nvm cp $ (brew-prefix nvm) / nvm-exec ~ / .nvm / निर्यात NVM_DIR = ~ / .nvm स्रोत $ (brew-prefix nmm) /nvm.sh

ऊपर बताए गए चरण आपके $ HOME पथ में NVM की कार्यशील निर्देशिका को जोड़ देंगे, nvm-exec को NVM की कार्यशील निर्देशिका में जोड़ देंगे और $ HOME / .bashrc, $ HOME / .zshrc, या आपके शेल के समतुल्य कॉन्फ़िगरेशन फ़ाइल में जोड़ देंगे (फिर से whats से लिया गया)। HomeMw का उपयोग करके एनवीएम इंस्टाल पर सूचीबद्ध)


7

यदि आपने सब कुछ अभी भी आज़माया है, तो आप इसे आज़मा सकते हैं: _

1 -> एनवीएम की स्थापना रद्द करें

rm -rf ~/.nvm

2 -> npm निर्भरता को इस का पालन ​​करके निकालें

3 -> एनवीएम स्थापित करें

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

4 -> सेट ~/.bash_profileकॉन्फ़िगरेशन

Daud sudo nano ~/.bash_profile

इसके बाद कॉपी और पेस्ट करें

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

5 -> CONTROL + Xपरिवर्तन सहेजें

6 -> भागो . ~/.bash_profile

7 -> अब आपको nvmअपनी मशीन पर स्थापित होना चाहिए , नोड चलाने के लिए nvm install v7.8.0यह डिफ़ॉल्ट नोड संस्करण होगा या आप नोड के किसी भी संस्करण को स्थापित कर सकते हैं


1
आपका बहुत बहुत धन्यवाद! यह एकमात्र समाधान था जो बश में भी नोड पथ सेट करता है और मेरे लिए काम करता है। मैंने "nvm install v7.8.0" का उपयोग करने के बजाय नवीनतम नोड संस्करण को स्थापित करने के लिए "nvm इंस्टॉल नोड" का उपयोग किया
user3492435

5

इस सवाल का उल्लेख OSX के लिए है, लेकिन यह मेरे लिनक्स ओएस में मेरे साथ हुआ। मैंने उपयोग करने की कोशिश की nvm alias default <version>लेकिन प्रत्येक नए टर्मिनल सत्र के लिए उपयोग किए गए नोड संस्करण को भुला दिया गया। तो, यहाँ समाधान है कि मैं समझ रहा हूँ।

नोड संस्करण के लिए डिफ़ॉल्ट उपनाम सेट करना सुनिश्चित करें , निम्न कोड को .bashrc, और में डालें source .bashrc

export NVM_DIR="/home/bonnie/.nvm"
## If the file exists and is not empty
if [ -s "$NVM_DIR/nvm.sh" ]; then
    ## Source it
    source "$NVM_DIR/nvm.sh"
fi
NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default")
export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH

वर्णनात्मक समाधान लिंक


1
बस एक नोट, यह vरिमोट सेट करते समय संस्करण में शामिल पर निर्भर करता है । के v4.2.4बजाय 4.2.4
वघन

4

ऐसा करके nvm install 10.14, उदाहरण के लिए, होगा nvm useवर्तमान खोल सत्र के लिए उस संस्करण, लेकिन यह होगा नहीं हमेशा यह भविष्य के सत्रों के लिए डिफ़ॉल्ट के रूप में सेट के रूप में आप उम्मीद करेंगे। एक नया शेल सत्र में आपको मिलने वाला नोड संस्करण द्वारा निर्धारित किया जाता है nvm alias default। भ्रामक रूप से, nvm installकेवल डिफ़ॉल्ट उपनाम सेट करेगा यदि यह पहले से सेट नहीं है। अपेक्षित व्यवहार प्राप्त करने के लिए, यह करें:

nvm alias default ''; nvm install 10.14

यह सुनिश्चित करेगा कि उस संस्करण को डाउनलोड किया गया है, इसे वर्तमान सत्र के लिए उपयोग करें और इसे भविष्य के सत्रों के लिए डिफ़ॉल्ट के रूप में सेट करें।


3

किसी भी संस्करण को स्थापित करने के बाद इसे चलाएं,

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local

यह कमांड आपके द्वारा नोड के किसी भी संस्करण को nvm / usr / स्थानीय / निर्देशिका में सक्रिय कर रहा है और अनुमतियों को सेट कर रहा है ताकि सभी उपयोगकर्ता उन तक पहुंच सकें।


मैं उस कमांड में &&s के बजाय s का उपयोग करने की सलाह ;दूंगा। यदि whichनोड को खोजने में विफल रहता है, तो हम chmod के लिए आगे बढ़ना नहीं चाहते हैं /bin/*!
joeytwiddle

3

मुझे यहां एक नया रास्ता मिल गया है। का उपयोग करते हुए n सहभागितापूर्ण तरीके से प्रबंधित आपका Node.js मदद करता है।


हाँ! यकीन नहीं होता कि यह 'कारण' है कि मैं fishशेल का उपयोग कर रहा हूं , लेकिन स्वीकृत जवाब मेरे काम नहीं आया। nएक इलाज काम करता है!
clozach

2

मैं ZSH का उपयोग कर रहा हूं इसलिए मुझे ~/.zshrcउस क्रम में NVM से संबंधित लाइनों के साथ संशोधित करना पड़ा :

[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh

1
$ nvm alias default {NODE_VERSION}

जब हम उपरोक्त कमांड का उपयोग करते हैं, केवल नोड संस्करण को अपडेट करते हैं लेकिन फिर npmभी पुराने संस्करण का उपयोग करते हैं।

यहाँ दोनों को अद्यतन करने के लिए एक और समाधान है nodeऔर npm, मेरे मामले में मैं नोड का उपयोग करना चाहता हूं 8.9.4और मैंने नीचे कमांड का उपयोग किया है।

$ nvm use default 8.9.4

और कमांड आउटपुट देता है।

अब नोड v8.9.4 (npm v5.6.0) का उपयोग कर


0

यदि आपके पास भी SDKMAN है ...

किसी तरह एसडीकेमैन मेरे एनवीएम के साथ संघर्ष कर रहा था। यदि आप अपनी बुद्धिमत्ता के साथ इस पर समाप्त होते हैं और फिर भी इसका पता नहीं लगा सकते हैं, तो मैंने SDKMAN से "इस मेल को END के अंत में ..." की अनदेखी करके और उसके बाद NVM लाइनें डालकर इसे ठीक कर दिया।

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] && source "/Users/myname/.sdkman/bin/sdkman-init.sh"

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

0

वीएस कोड संपादक में एकीकृत टर्मिनल का उपयोग करते समय मैं उसी मुद्दे का सामना कर रहा था। Nvm का उपयोग करके नोड संस्करण को बदलने के बाद वीएस कोड को फिर से शुरू करना मेरे लिए समस्या को निर्धारित करता है।


0

यहाँ एक सरल निर्देश है:

1) स्थापित करें:

nvm install 8.10.0

2) प्रति टर्मिनल एक बार उपयोग करें

nvm use 8.10.0

3) सभी टर्मिनलों के लिए डिफ़ॉल्ट के रूप में सेट करें

nvm alias default 8.10.0

आपको उन कार्यों को करने के लिए रूट अनुमतियों का उपयोग करने की आवश्यकता हो सकती है।

और nvm प्रलेखन की जांच करना न भूलें अधिक जानकारी के लिए ।

यह भी ध्यान दें कि आपको अपने आईडीई के लिए नोड संस्करण निर्दिष्ट करने की आवश्यकता हो सकती है: यहाँ छवि विवरण दर्ज करें


-2

इसके अलावा अगर आपके पास nvm जाँच से पहले नोड स्थापित था ~ / .bash_profile में ऐसा कुछ नहीं है:

export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH

यदि आपके पास यह है, तो टिप्पणी करें / इसे हटा दें और एनवीएम को डिफ़ॉल्ट नोड संस्करण को संभालना शुरू करना चाहिए।


पथ चर सेट करने का nvm संस्करण चयन से कोई लेना-देना नहीं है, निश्चित रूप से?
sn0r

आपके द्वारा इसे सेट करने के बाद nvm.sh को अपने PATH को संशोधित करना चाहिए (जैसे ऊपर के साथ)। यह nvm / usr / लोकल / बिन से पहले अपना वर्जन डायरेक्टरी देता है जहाँ नोड का "सिस्टम" वर्जन रहता है।
डेनिस होवे

-3

इस मुद्दे के साथ लंबे समय तक संघर्ष करने के बाद, मैंने पाया कि इसे कैसे ठीक किया जाए। यहाँ समस्या के लिए एक कदम से कदम समाधान है:

  • टर्मिनल खोलें और कमांड लाइन डेवलपर टूल इंस्टॉल करें:

    xcode-select --install

  • एंटर दबाए

  • NVM का नवीनतम संस्करण स्थापित करें:

    cd ~/

  • एंटर दबाए

    git clone https://github.com/creationix/nvm.git .nvm

  • एंटर दबाए
  • यदि आपने पहले ही .nvm फ़ोल्डर बनाया है, तो आपको अगला त्रुटि संदेश दिखाई देगा:

    fatal: destination path '.nvm' already exists and is not an empty directory.

    एल्स, आपको क्लोनिंग प्रक्रिया तब तक चलती दिखाई देगी, जब तक कि यह नहीं हो जाता।

  • नवीनतम NVM संस्करण देखें:

    cd ~/.nvm

  • एंटर दबाए

    git checkout v0.34.0

    आपको इसके समान प्रतिक्रिया मिलेगी:

    HEAD is now at 3d9c31d v0.34.0

    संस्करण विभिन्न प्रणालियों पर भिन्न हो सकता है।

    ls

  • एंटर दबाए

    . nvm.sh

  • एंटर दबाए

    nvm list

  • एंटर दबाए

    आप अपने मशीन पर स्थापित विभिन्न नोड संस्करणों को देखेंगे, कुछ त्रुटियां हो सकती हैं, उन्हें ध्यान न दें।

    nvm ls-remote | tail -n9

  • एंटर दबाए

    nvm list

  • विम का उपयोग कर खुला बैश:

    vim ~/.bash_profile

  • विम संपादक प्रेस के अंदर: एक नई लाइन iदर्ज करने INSERT modeऔर शुरू करने के लिए । यदि संपादन करते समय आपसे कोई गलती हो, ESCतो कुंजी दबाएं और फिर :q!बिना सहेजे बाहर निकलें।

    export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion

  • दबाएँ ESCजब आप फ़ाइल संपादित करना समाप्त कर लें (तो आपको INSERT मोड गायब हो जाता है) ।

  • दबाएँ :wqफाइल को सेव करने के लिए ।
  • एंटर दबाए

    nvm ls-remote | tail -n9

  • प्रस्तुत नया एनवीएम संस्करण प्रविष्ट करें और इंस्टॉल करें:

    nvm install 12.6.0

  • जब प्रक्रिया समाप्त हो जाएगी तो आप देखेंगे: Now using node v12.6.0 (npm v6.9.0)

  • आप जाँच कर सकते हैं कि क्या संस्थापन दबाने से सफल होता है:

    node -vया npm -v, यह आपको आपके सिस्टम पर स्थापित nvm और npm दोनों के संस्करणों को दिखाना चाहिए।

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