nvm yeni terminal oturumunda “unutuyor” düğümü tutuyor


546

OS X'te yeni bir terminal oturumu kullanıldığında nvm, düğüm sürümünü unutur ve varsayılan olarak hiçbir şey yapmaz:

$ nvm ls:

         .nvm
     v0.11.12
     v0.11.13

nvm use v.0.11.13Her seansta vurmaya devam etmeliyim :

         .nvm
     v0.11.12
->   v0.11.13

Hem brewyükleme hem de resmi kurulum komut dosyasını denedim .

Benim .profiledemlemek versiyonu için:

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

Ve install.sh betiği için:

$ 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

Yanlış yaptığımın ipucu var mı?


1
Sadece buraya eklemek istiyorum - İhracat yaptığınızdan emin olun .bash_profileve değil.bashrc
James111

Yanıtlar:


1181

Deneyin nvm alias default. Örneğin:

$ nvm alias default 0.12.7

Bu, kabuğunuzdaki varsayılan düğüm sürümünü ayarlar. Ardından, kabuk penceresini kapatıp yeni bir pencere açarak değişikliğin devam ettiğini doğrulayın, ardından: node --version


11
Bu zaten nvm kullanımının işi değil mi? Sonra $ nvm alias default 0.11.13ve $ nvm use 0.11.12ben olsun node --version = 0.11.12. Yine de, yeni bir oturumda, düğüm tekrar gitti. Debian'da bu sorunum yok.
frhd

4
Tamam, Ive bir yazım hatası vardı: nvm alias defaul X. Doğru kullanım ile gerçekten işe yarıyor. İş akışı olacaktır Yani nvm install Xo zaman nvm alias default X, sanırım. Yardım ettiğiniz için teşekkürler!
frhd

21
Ben de aynı sorunu vardı ve ben NVM_DIRsonra ihracat vardı çünkü nvm.sh. NVM_DIRÖnce dışa aktardığınızdan emin olun .
maxwell2022

11
nvm alias defaultDüğümün geçerli ortam için değil, yalnızca yeni sürümler için ayarlanmadığını unutmayın .
ericsoco

28
Bu işe yaramazsa, .bash_profile(veya .bashrcherhangi bir şey) PATHsonra değiştirecek bir şey olmadığından emin olunsource xx/nvm.sh
goodmanship

85

nodeDaha sonra düğüm sürümü güncellemeleriyle birlikte varsayılan takma adı güncellemekten kaçınmak için kendi takma adı.

nvm alias default node

2
! UYARI: 'Düğüm' sürümü mevcut değil. varsayılan -> düğüm (-> Yok)?
House3272

6
Ne olmuş node alias default stable?
Pierre Henry

1
stableArtık kullanmak istediğini sanmıyorum . Nvm dokümanlarından: "kararlı: bu takma ad kullanımdan kaldırılmıştır ve yalnızca gerçekten v0.12 ve önceki düğümler için geçerlidir. Şu anda, bu düğüm için bir takma addır."
pherris

1
nodeBu varsayılan olarak hangisi ? Geçerli kabukta NVM tarafından kurulan ve kullanılan Düğüm mü, yoksa Düğümün kurulum paketi veya Homebrew vb. Tarafından sisteme yüklenmiş olan Düğüm mü?
2540625

7
(burada nvm sürdürücü) node(ve stableancak semver'de yayınlanan her şey kararlı, bu yüzden artık işe yaramaz bir kelime) mevcut en son sürümü kullanıyor. En son yüklenen yerel komutlar için; uzak komutlar için, en son kullanılabilir.
LJHarb

40

En son kararlı sürümü yüklemek için:

nvm install stable

Varsayılanı kararlı sürüme ayarlamak için (belirli bir sürüm yerine):

nvm alias default stable

Yüklü sürümleri listelemek için:

nvm list

İtibariyle v6.2.0, şöyle görünecektir:

$ 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)

Bu harika çalıştı ve kullanma önerisi, nvm listkullanıcıların sürümlerinde neler olduğunu görselleştirmelerine yardımcı oluyor. Teşekkürler!
Solvitieg

30

Benim durumumda, başka bir program eklemişti PATHdeğişiklikleri için.bashrc

Diğer program değiştirdiyseniz PATH sonra NVM en başlamasının ardından NVM en PATHdeğişiklikler unutulurdu ve bizim sistem düğümünü alacağı PATH(ya da hiç düğüm).

Çözüm nvm kurulumunu alt kısmına taşımaktı..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"

Çözüm:

### 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

(Bu CentOS 4.2.46 bash ile oldu. Bana bash bir hata gibi görünüyor, ama yanılmış olabilir.)


1
Bu bana yardımcı oldu! Varsayılan değer takıldı.
Redsandro

1
Bu adama madalya ver! NVM_DIR dışa aktarma sonra beni çıldırdı benim zshrc diğer * rc dosyaları ek yükleme vardı. Teşekkür ederim!
bobbytables

Teşekkür ederim! Bu beni çılgına çeviriyordu.
Ağaçlar

27

nvm işini PATH değişkenini değiştirerek yapar, bu nedenle nvm.sh komut dosyasını kaynakladıktan sonra PATH'nizi bir şekilde başka bir şeye değiştirmediğinizden emin olmanız gerekir.

Benim durumumda, nvm.sh .bashrc içinde çağrıldı, ancak daha sonra PATH değişkeni .bash_profile içinde güncelleniyordu, bu da oturumumun nvm düğümünden önce sistem düğümünü bulmasına neden oldu.


1
bunu nasıl kontrol edebilirim? Durumun bu olduğundan şüpheleniyorum.
Hafif Fuzz

bu benim durumum teşekkürler! i .zshrc dosyamda dışa aktarmayı ayarlıyordum, sadece alta taşıyın ve sorun çözüldü
Alejandro Silva

Benim durumum buydu. Çözüm, NVM ~ / .bash_profile girdisini dosyanın + setinin sonuna nvm alias defaultve nvm usegereken sürüme taşımaktı.
Eugene Tartakovsky

Benim için çözüm buydu. Aşağıdakilerin altına taşındı .bashrc: export NVM_DIR="$HOME/.nvm"sonra. "/usr/local/opt/nvm/nvm.sh"
asmiller

10

En yüksek puan alan çözümler benim için işe yaramadı. Benim çözümüm aşağıda:

  1. Homebrew kullanarak NVM'yi tamamen kaldırın:brew uninstall nvm
  2. yeniden yükleyin brew install nvm
  3. Terminal'de aşağıdaki adımları izleyin (nvm'yi homebrew üzerinden kurarken de listelenir):

    mkdir ~ / .nvm cp $ (demlemek - ön düzeltme nvm) / nvm-exec ~ / .nvm / dışa aktarma NVM_DIR = ~ / .nvm kaynak $ (demlemek - ön düzeltme nvm) /nvm.sh

Yukarıda özetlenen adımlar NVM'nin çalışma dizinini $ HOME yolunuza ekleyecek, nvm-exec dosyasını NVM'nin çalışma dizinine kopyalayacak ve $ HOME / .bashrc, $ HOME / .zshrc veya kabuğunuzun eşdeğer yapılandırma dosyasına ekleyecektir. homebrew kullanarak bir NVM kurulumunda listelenir)


7

Eğer hala şanssız olan her şeyi denediyseniz, bunu deneyebilirsiniz: _

1 -> NVM'yi Kaldır

rm -rf ~/.nvm

2 - izleyerek> Kaldır npm bağımlılıkları bu

3 -> NVM'yi yükleyin

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

4 -> ~/.bash_profileYapılandırmayı ayarla

Çalıştırmak sudo nano ~/.bash_profile

Bunu takip edip yapıştırın

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 + Xdeğişiklikleri kaydet

6 -> Çalıştır . ~/.bash_profile

7 -> Şimdi nvmmakinenize yüklemelisiniz, düğüm çalışmasını yüklemek için nvm install v7.8.0bu varsayılan düğüm sürümü olacak veya düğümün herhangi bir sürümünü yükleyebilirsiniz


1
Çok teşekkürler! Düğüm yolunu bash'de ayarlayan ve benim için çalışan tek çözüm buydu. Ben sadece "nvm install v7.8.0" kullanmak yerine en son düğüm sürümünü yüklemek için "nvm install node" kullandım
user3492435 18:18

5

Bu soru OSX için bahsetti, ancak linux işletim sistemimde başıma geldi. Kullanmayı denedim nvm alias default <version>ama her yeni terminal oturumu için kullanılan düğüm sürümü unutuldu. işte anladığım çözüm.

düğüm sürümü için varsayılan bir diğer ad belirlediğinizden emin olun , aşağıdaki kodu .bashrc ve içine koyun 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

tanımlayıcı çözüm bağlantısı


1
Sadece bir not, bu vuzaktan kumandayı ayarlarken sürüme dahil edilmeye dayanır . Örneğin v4.2.4yerine 4.2.4.
vaughan

4

Doing nvm install 10.14örneğin olacak nvm useo anki kabuk oturumu için sürüm ama olacak değil beklediğiniz gibi hep gelecek oturumları için varsayılan olarak ayarlayın. Yeni bir kabuk oturumunda aldığınız düğüm sürümü tarafından belirlenir nvm alias default. Kafa karıştırıcı bir şekilde, nvm installvarsayılan takma adı yalnızca önceden ayarlanmamışsa ayarlar. Beklenen davranışı elde etmek için şunu yapın:

nvm alias default ''; nvm install 10.14

Bu, sürümün indirilmesini sağlar, geçerli oturum için onu kullanır ve gelecekteki oturumlar için varsayılan olarak ayarlar.


3

herhangi bir sürümü yükledikten sonra çalıştır,

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

Bu komut, nvm aracılığıyla etkin olan düğümün herhangi bir sürümünü / usr / local / dizinine kopyalar ve izinleri tüm kullanıcıların erişebilmesi için ayarlar.


Bu komutta &&s yerine s kullanmanızı tavsiye ederim ;. Eğer whichdüğüm bulamazsa, biz chmod devam etmek istemiyoruz /bin/*!
joeytwiddle


2

Ben ~/.zshrcbu sırayla NVM ile ilgili satırları değiştirmek zorunda ZSH kullanıyorum :

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

1
$ nvm alias default {NODE_VERSION}

Yukarıdaki komutu kullandığımızda, yalnızca düğüm sürümünü güncelleyin, ancak npmyine de eski sürümü kullanır.

İşte her ikisini de güncellemek için başka bir çözüm nodeve npmbenim durumumda düğümü kullanmak istiyorum 8.9.4ve aşağıdaki komutu kullandım.

$ nvm use default 8.9.4

Ve komut çıktıyı döndürür.

Şimdi v8.9.4 düğümü kullanılıyor (npm v5.6.0)


0

SDKMAN'iniz varsa ...

SDKMAN bir şekilde NVM ile çatışıyordu. Eğer fikirleriniz bununla bitiyorsa ve hala çözemiyorsanız, SDKMAN'den "BU DOSYANIN SONUNDA OLMALIDIR ..." seçeneğini görmezden gelerek ve NVM hatlarını arkasına koyarak düzelttim.

#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

VS Code editöründe entegre terminal kullanırken aynı sorunla karşı karşıya kaldım. Nvm kullanarak düğüm sürümünü değiştirdikten sonra VS Kodunu yeniden başlatmak benim için sorunu düzeltti.


0

İşte basit bir talimat:

1) yükleyin:

nvm install 8.10.0

2) Terminal başına bir kez kullanın

nvm use 8.10.0

3) Tüm terminaller için varsayılan olarak ayarla

nvm alias default 8.10.0

Bu eylemleri gerçekleştirmek için kök izinlerini kullanmanız gerekebilir.

Daha fazla bilgi için nvm belgelerine bakmayı unutmayın .

Ayrıca IDE'niz için düğüm sürümünü belirtmeniz gerekebileceğini unutmayın: resim açıklamasını buraya girin


-2

Ayrıca nvm'den önce düğümün kurulu olması durumunda , ~ / .bash_profile dosyasında aşağıdaki gibi bir şey olup olmadığını kontrol edin :

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

Elinizde varsa, yorum yapın / kaldırın ve nvm varsayılan düğüm sürümünü işlemeye başlamalıdır.


Bir yol değişkeninin ayarlanmasının kesinlikle nvm sürüm seçimi ile ilgisi yok mu?
sn0r

nvm.sh, PATH'ınızı ayarladıktan sonra değiştirmelidir (örn. yukarıdakilerle). Bu let nvm onun versiyon dizini koymak önce / usr / local / bin nereye düğüm hayatımızın "Sistem" versiyonunu.
Denis Howe

-3

Bu sorunla uzun süre çeliştikten sonra, nasıl düzeltileceğini buldum. İşte sorun için adım adım bir çözüm:

  • Terminali açın ve komut satırı geliştirici araçlarını yükleyin:

    xcode-select --install

  • Enter tuşuna basın

  • NVM'nin en son sürümünü yükleyin:

    cd ~/

  • Enter tuşuna basın

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

  • Enter tuşuna basın
  • Daha önce .nvm klasörünü oluşturduysanız, bir sonraki hata iletisini görürsünüz:

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

    Aksi takdirde, klonlama işleminin bitene kadar çalıştığını göreceksiniz.

  • En son NVM sürümüne göz atın:

    cd ~/.nvm

  • Enter tuşuna basın

    git checkout v0.34.0

    Şuna benzer bir yanıt alırsınız:

    HEAD is now at 3d9c31d v0.34.0

    Sürüm farklı sistemlerde farklı olabilir.

    ls

  • Enter tuşuna basın

    . nvm.sh

  • Enter tuşuna basın

    nvm list

  • Enter tuşuna basın

    Makinenizde yüklü farklı düğüm sürümlerini göreceksiniz, bazı hatalar olabilir, onlara dikkat etmeyin.

    nvm ls-remote | tail -n9

  • Enter tuşuna basın

    nvm list

  • Vim kullanarak bash dosyasını açın:

    vim ~/.bash_profile

  • Vim düzenleyicinin içinde yeni bir satır igirmek INSERT modeve başlatmak için : tuşuna basın . Düzenleme sırasında herhangi bir hata yaşarsanız, kaydetmeden çıkmak için önce ESCtuşuna, ardından tuşuna basın :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

  • ESCDosyayı düzenlemeyi bitirdiğinizde tuşuna basın (INSERT modunun kaybolduğunu göreceksiniz).

  • :wqDosyayı kaydetmek için düğmesine basın .
  • Enter tuşuna basın

    nvm ls-remote | tail -n9

  • Enter tuşuna basın ve sunulan en yeni nvm sürümünü yükleyin:

    nvm install 12.6.0

  • İşlem bittiğinde şunu göreceksiniz: Now using node v12.6.0 (npm v6.9.0)

  • Aşağıdakilere basarak kurulumun başarılı olup olmadığını kontrol edebilirsiniz:

    node -vveya npm -vsize sisteminizde yüklü nvm ve npm sürümlerini göstermelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.