nvm, npm config “prefix” seçeneğiyle uyumlu değildir:


208

Başka bir NodeJS sürümünü çalıştırmaya çalışıyorum nvmama bu hatayı alıyorum:

$ nvm use v4.2.4

nvm is not compatible with the npm config "prefix" option: 
   currently set to "/Users/z/.npm-global"
Run `npm config delete prefix` or `nvm use --delete-prefix v4.2.4` to unset it.

Önekimi önlemek için ayarladım sudo npm(bkz. Https://docs.npmjs.com/getting-started/fixing-npm-permissions ).

nvmGlobal olarak yüklenen paketler için önekimi kaybetmeden kullanabilmemin bir yolu var mı ?


Bu sorunu çözmek için npm config delete önekini kullanıyorum, şimdiye kadar sorun yok
ggdx

@DanWhite Öneki silersem, genel yüklemelerimi özel bir dizine yönlendirme kaybederim.
Dmitri Zaitsev

5
(nvm sürdürücü burada) Mesele bu. NVM ile global kurulumlarınızı siz değil, yönetir. Ayrı olarak, global yüklemeler hiçbir zaman düğüm sürümleri arasında paylaşılmamalıdır.
LJHarb

2
Düğümün her kopyası, kendi ayarlarını belirleyen kendi npm'si ile birlikte gelir.
LJHarb

1
Aslında, nvm ile seçilen her düğüm sürümü kabuk başına - tasarım gereğidir.
LJHarb

Yanıtlar:


379

Öneki Sil ve Sıfırla

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

Not: Sürüm numarasını hata mesajında ​​belirtilen numarayla değiştirin.

nvm npm config "öneki" seçeneğiyle uyumlu değil: şu anda "/ usr / local" Run "npm config delete öneki" veya "nvm use --delete-prefix v6.11.1 --silent" olarak ayarlanmış.


Github'da @ gabfiocchi'ye verilen krediler - "nvm önekinin üzerine yazmanız gerekiyor"


10
Bu bir cazibe gibi çalıştı! Sadece düğüm versiyonumu almak zorunda kaldım.
Sirius_B

Ben vscode entegre terminali görmemeliydi bir düğüm sürümünü görmek için neden olacak sembolik bir bağlantı / usr / local / bin / düğüm var gibiydi. Yukarıdaki adımları izledikten sonra sembolik bağlantıyı silmek sorunu çözmüş gibi görünüyor. Benim düğüm ve npm şimdi NVM'de tabidir
Sudhanshu Mishra

bu mükemmel çalışıyor. sadece düğüm sürümünü önek ayarlamak için kaçırmayın, kullanacaksınız. npm config set prefix $NVM_DIR/versions/node/<node-version-directory>
Hiren

3
Bu yalnızca geçerli pencerede çalışır. Yeni bir kabuk ya da yeni bir pencere açarsanız, yeniden yapmalısınız.
jtiscione

3
Bunları sırayla yapmak zorundayım. 1. nvm kullanımı --delete-prefix vx.xx --silent 2. npm config delete öneki 3. npm config set öneki $ NVM_DIR / version / node / vx.xx
Guangtong Shen

66

Aynı sorunu yaşadım ve yürütme npm config delete prefixbana yardımcı olmadı.

Ancak bu:

Demlemek kullanarak nvm yükledikten sonra ~/.nvmdizin oluşturun :
$ mkdir ~/.nvm

ve içine aşağıdaki satırları ekleyin ~/.bash_profile:

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

(Eğer herhangi bir başka hiçbir nvm ilgili komutu olup olmadığını kontrol edin ~/.bashrcveya ~/.profileveya ~/.bash_profile)

Yeni bir terminal açın ve bu sefer herhangi bir uyarı mesajı yazmamalıdır. Komutu
yürüterek NVM'nin çalışıp çalışmadığını kontrol edin nvm --version.
Bundan sonra, NodeJS'yi kullanarak kurun / yeniden kurun nvm install node && nvm alias default node.

Daha fazla bilgi

nvmKullanarak yükledim homebrewve bundan sonra bu bildirimi aldım:

Memba, bizden Homebrew aracılığıyla nvm'yi açıkça yönetmemizi istediğini ve raporlamadan önce standart nvm kurulum yöntemiyle ilgili herhangi bir sorunu kontrol etmeniz gerektiğini unutmayın.

Eğer mevcut değilse NVM'nin çalışma dizinini oluşturmalısınız:

 mkdir ~/.nvm

Aşağıdakileri ~/.bash_profileveya istediğiniz kabuk yapılandırma dosyasına ekleyin:

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

$NVM_DIRHerhangi bir konuma ayarlayabilirsiniz , ancak bunu değiştirmeden bırakmak /usr/local/Cellar/nvm/0.31.0, yükseltme / yeniden yükleme sonrasında nvm tarafından yüklenmiş Düğüm kurulumlarını yok eder.

Bunu görmezden gelmek beni şu hata mesajına getirdi:

nvmnpm config"önek" seçeneğiyle uyumlu değil : şu anda ayarı kaldırmak için "/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
Çalıştır nvm use --delete-prefix v5.7.1 --silentolarak ayarlanmış.

Daha önceki bir kılavuzu (dan homebrew/nvm) takip ettim ve bundan sonra NodeJS'i yeniden kurmam gerektiğini buldum. Ben de yaptım:

nvm install node && nvm alias default node

ve düzeltildi.

Güncelleme: NVM'yi kurmak için demlemek kullanmak Terminal'in yavaş başlatılmasına neden olur. Çözmek için bu talimatları takip edebilirsiniz .


6
nvm alias default nodeBenim durumumda bana yardımcı gibi görünüyordu
mirkobrankovic

28
(nvm sürdürücü burada) nvmdemleme yoluyla takıldığında desteklenmez. Lütfen onu kaldırın ve benioku içinde curl betiği olan uygun yöntemi kullanın.
LJHarb

3
Yüklemek için curl betiğini kullandım nvm. Bu cevap benim için işe yaramadı.
intcreator

1
@intcreator Teşekkürler. Ben tam bir taze bu kılavuzun dayalı NVM kullanarak düğümün yüklemek yapıyor sona erdi: nearform.com/blog/how-to-manage-node-js-sudo-free-with-nvm Ve mesele ben daha önce sunduğundan olmanın sona erdi artık desteklenmeyen homebrew kullanılarak kurulur. Temizlenmesi zaman alan bir sürü kalıntı bıraktı ve daha sonra dizinlerin zaten vidalı izin sorunları olduğu için tekrar rm -rf node_modulesçalıştırmam npm installgerekiyordu.
Jake T.

1
Posterity netliği için brew remove node -f, yüklü tüm sürümleri kaldıran bir yapmam gerekiyordu . Önce bunu yapın, sonra yukarıdaki bağlantımdaki kılavuzu izleyin, ardından node_modules'ü kaldırın. Temiz bir kurulum almalısınız! Daha sonra npm'i de yüklemeniz gerektiğini düşünüyorum, sadece aradığım zaman açılan bir nodejs.org makalesinden gelen talimatları izledim. npm install npm@latest -gdüğümü yükledikten sonra komuttu.
Jake T.

31

Bu, yerel Düğüm yüklemenizle çakışabilir (geçmişte NVM'den başka bir yolla yüklediyseniz). Bu düğüm örneğini silmelisiniz:

  1. node_modules'ü kaldır sudo rm -rf /usr/local/lib/node_modules
  2. düğümü kaldır sudo rm /usr/local/bin/node
  3. düğüm bağlantısını kaldır cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

Nvm'yi yükleyemedikten sonra


9
Sadece kod cevabınızı biraz açıklama ile arttırmak ister misiniz? Yorumlar yeterli değildir, çünkü komut satırlarınız açıkladıklarından daha karmaşıktır. Cevabınızın ayrıntılarının sorunu neden çözdüğünü açıklayın. Cevabınızı daha eski cevaplarla karşılaştırın. Cevabınızı bu soruya katma değer yapan nedir?
Yunnosch

Benim için, boş ilk kod satırının (yakın zamanda eklediğiniz) kendi açıklamasına ihtiyacı var ...
Yunnosch

StackOverflow'da beş ay sonra, çok aydınlatıcı rehberli yardım turuna katılmayı düşünün .
Yunnosch

Bu kod snippet'i soruyu çözebilir, ancak bir açıklama dahil olmak , yayınınızın kalitesini artırmaya yardımcı olur. Gelecekte okuyucular için soruyu cevapladığınızı ve bu kişilerin kod önerinizin nedenlerini bilmeyebileceğini unutmayın. Lütfen kodunuzu açıklayıcı yorumlarla doldurmamaya çalışın, bu hem kodun hem de açıklamaların okunabilirliğini azaltır!
Filnor

"Eğer nvm yükleyemiyorum sonra" Yani, eğer amacım nvm kullanmak ise, bunu yapmamalıyım?
Jake T.

18

Bu hata, NVM yükleme klasörü yolunuzda bir Sembolik Bağlantı olduğunda oluşabilir .

açıklama

NVM'nin varsayılan kurulum yolu: $HOME/.nvmancak ana klasörünüz, benim durumum gibi başka bir sürücü için sembolik bir bağlantı olabilir.

Örneğin, ana klasörüm diğer bir sürücüye Sembolik Bağlantı:

/home/myuser -> /bigdrive/myuser

Bu önek sorununa neden olur.

Çözüm

Başlangıç ​​komut dosyanızda (.bashrc veya .zshrc veya diğer), NVM klasörünü doğrudan yola değiştirin.

Ör: NVM_DIR="/bigdrive/myuser/.nvm".

Bashrc

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

Teşekkürler! Cevabınızın daha fazla görünürlüğü olmalı
ben

Hayır! Bu çılgın hatayı anlamak için beynimi kızarttım. Bana yardımcı olacak herhangi bir yazı bulamadım. Sorunu çözmek için çok uğraşmak zorunda kaldım. Size yardımcı olmaktan mutluluk duyuyorum. Daha görünür olmak için cevabımı oyla.
André Avelar

benim echod $ NVM_DIR bashrc içinde "/Users/vijayshanker/.nvm" oldu "basmak NVM_DIR =" / Kullanıcılar / vijayshanker / .nvm (ve geri kalanı) "koymak, ama hala düzelttim, için mücadele 6 saat, lütfen not edin: npm yüklü değil, npm'den nodumu kurmadım
vijay shanker

bir çözüm NVM_DIR = $ (readlink -f "$ HOME / .nvm") .bashrc veya komut satırına aktarılabilir. Bu, tüm symlink'i $ HOME / .nvm'den kaldırır ve yalnızca gerçek dizinlerle düz bir tam yolu dışa aktarır.
Nimlar

10

Ben üzerinden yüklenen, homebrew nvmile nvmyüklenen düğümü kullanırken bu koştu . Ben çalıştırarak bunu çözmüş brew uninstall nvm, rm -rf $NVM_DIRardından kullanarak NVM yeniden resmi komut yüklemek ve gerekli düğüm sürümünü yeniden.

Not: Ayrıca $NVM_DIRbağlandım ve bağlandım. Onu homedirime geri taşıdım.


8

Ana dizininiz bir yere monte edilmişse sorun olabilir, çünkü nvm sembollerle düzgün çalışmaz. Benim $ NVM_DIR nerede olduğu umurumda değil çünkü ben bu çalıştırmak ve tüm iyi çalışıyor:

$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1

6

resim açıklamasını buraya girinAynı sorunu vardı ve terminal ile her seferinde gerçekten sinir bozucu oldu. Komutu terminale çalıştırdım ve düzeltildi

Onlar demlemek nvm kaldırmak için

sadece kaldırma nvm demlemek yeterli olmayabilir

npm önekinin hala / usr / local olduğunu görürseniz, bu komutu çalıştırın

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules


4

Ben aynı hata mesajı ama başka bir çözüm var. Kıvrılma (install.sh) sırasında otomatik olarak oluşturulan yol eşleşmiyor. Şununla kontrol et:

echo $NVM_DIR

Benim durumumda: /var/www//.nvm. Otomatik oluşturulan bash dosyanızda gösterin ve değiştirin ve değiştirin: (~ / .bash_profile, ~ / .zshrc, ~ / .profile veya ~ / .bashrc)

değiştirmek

export NVM_DIR="$HOME/.nvm"

ile (ör.)

export NVM_DIR="$HOME.nvm"

Ben de aynı yorumu koymak için buraya geldim :) Benim durumumda kullanıcı oluşturduğumda ben useradd - ev / ev / kullanıcı / olarak izleyen / ben / etc / passwd dosyasından kaldırıldı ve her şey çalışmaya başlamak çünkü tekrar
İsrail

1

Https://stackoverflow.com/a/47861348/2391795 Cevabını takip ettim ama işe yaramadı.

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

Önerilen komutları çalıştırdıktan sonra benim nvm artık çalışmadı, çalışan nvm usekullanılan uygun düğüm sürümünü görüntüler, ancak çalışan node -vbaşka bir gösterecektir. Artık düğümün sürümünü değiştirmek mümkün değildi.

Nvm'yi tamamen düzeltmek için kaldırdım ve yeniden kurdum. Https://github.com/creationix/nvm#manual-uninstall komutunu çalıştırarak takip ettim

$ rm -rf "$NVM_DIR"

Sonra .zshrcbenim durumda olan nvm ile ilgili satırları kaldırmak için benim düzenledi

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"

Sonra yeni bir kabuk başlattı (böylece bu yeni kabukta nvm yüklenmedi) ve https://github.com/creationix/nvm#install-script koştu

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

Hangi benim daha önce kaldırmıştı satırları nvm ekledi .zshrc.

Sonra nvm'yi eskisi gibi kullanabildim. Sanırım bu garip bir durumdu, işler ters gitti ve beni her şeyi yeniden yüklemeye zorladı, çoğu insan bu sorun nedeniyle bu durumdan geçiyor gibi görünmüyor.


1

Durumumu tarif edeyim.

İlk olarak, mevcut yapılandırmayı kontrol edin

$ nvm use --delete-prefix v10.7.0
$ npm config list

Sonra çıktı yapılandırma hata bulundu:

; project config /mnt/c/Users/paul/.npmrc
prefix = "/mnt/c/Users/paul/C:\\Program Files\\nodejs"

Bu nedenle, C:\\Program Files\\nodejs/mnt/c/Users/paul/.npmrc dosyasını sildim.


1

Bu sorunu VSCode ve JetBrains Terminalleri'nde gösteriliyorken çözdüm, ancak aşağıdaki komutları kullanarak yerel terminalde değil:

ls -la /usr/local/bin | grep "np[mx]"

Bu size sonunda çözümlenmiş yolu verecektir:

... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js

Oradan, dosyaları kaldırmak ve VS Kodunu yeniden başlatmak sorunu çözmelidir:

rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm -R /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js

bağlantıyı düzelt: https://github.com/nvm-sh/nvm/issues/1690#issuecomment-392014774


0

Ben nvm önek sorunu için bir çözüm arıyordu (çözümü bulmadan önce) bu soru bulundu. İşte benim kabuk "iletişim". Umarım biri için yararlı olabilir. Bu yazının yardımıyla ön ek oluşturmayı başardım: https://github.com/npm/npm/issues/6592

Denediğimde npm config delete prefixveya nvm use --delete-prefixkullanmadan önce npm --prefix="" set prefix "", sadece aldım: npm ERR! tamam kodu 0

Her düğüm sürümünde aynı prosedürü tekrarlamanız gerekeceğini unutmayın, kurulumdan sonra önek (benim durumumda) / usr / local olarak ayarlanmıştır.

    $ nvm install 0.10
    ######################################################################## 100.0%
    nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
    Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
    $ npm --prefix="" set prefix ""
    $ nvm use 0.10.44
    nvm is not compatible with the npm config "prefix" option: currently set to "/home/john"
    Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
    $ nvm use --delete-prefix v0.10.44
    Now using node v0.10.44 (npm v1.3.10)
    $ nvm ls
    v0.10.44
             v4.4.3
    ->       system
    default -> 4.4.3 (-> v4.4.3)
    node -> stable (-> v4.4.3) (default)
    stable -> 4.4 (-> v4.4.3) (default)
    iojs -> N/A (default)
    $ npm config get prefix
    /usr/local

0

Bu klasörü linux'ta yeni bir sürücüye taşıdıktan sonra yaşadım. .Nvm klasörü kaldırılarak ve nvm yeniden yüklenerek giderildi


0

Sorunu çözdüm. Ben sembolik olarak $HOME/.nvmhiç $DEV_ZONE/env/node/nvmdizinde. Aynı sorunla karşı karşıyaydım. Ben yerini NVM_DIRde $HOME/.zshrcşöyle

export NVM_DIR="$DEV_ZONE/env/node/nvm"

BTW, lütfen NVM'yi kullanarak curlveya wgetkomutunu kullanarak kullanmayın brew. Daha fazla bilgi için lütfen Github'daki bu sayıdaki yorumu kontrol edin: 855 # issuecomment-146115434


Ne yükleme hakkında nvmsahip npm?
Dmitri Zaitsev

1
NVM'yi homebrew aracılığıyla kurmak resmen onaylanmamıştır ve bazı uyumsuzluklar nedeniyle sorunlara yol açar. Resmi yol curl / wget kullanmaktır, bkz. Github.com/creationix/nvm#install-script bkz. Github.com/creationix/nvm/issues/298#issuecomment-152255091 npm aracılığıyla yükleme AFAIK desteklenmez, çünkü nvm yüklemeleri npm, bu nedenle npm de nvm kurarsa, kenar kasalara yol açabilir. Daha önce bağladığım konuda bu konuyu okuyabilirsiniz.
Vadorequest

0

Sadece bir fikrim var. Hatayı çözmek için sembolik bağlantıyı kullanın, ancak genel olarak yüklenmiş paketler için önekinizi kullanmaya devam edebilirsiniz. ln -s [your prefix path] [path in the '~/.nvm'] klasörde sembolik bir klasöre sahip olursunuz ~/.nvm, ancak aslında global paketleriniz yine de [önek yolunuz] içine kurulur. Sonra hata tekrar gösterilmez ve nvm use **normal olarak kullanabilirsiniz . ps: benim için çalıştı mac. pps: global olarak kurulu paketleri kullanmak $PATHiçin npm binklasörünüze ayarlamayı unutmayın .


-2

Not:
nvm'yi kaldırmak, silmek veya kaldırmak için - deneyebileceğiniz $NVM_DIRklasörü (genellikle ~/.nvm) kaldırmanız yeterlidir
:
rm -rf ~/.nvm

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.