npm genel yol öneki


142

Her zamankinden daha temkinli davranıyorum çünkü npmgeçmişin davranışları ile kafam karıştı .

Bir Mac kullanıyorum ve node.js'yi yükledim brew install node.

Şimdi jslint.jskomut satırında komut olarak çalıştırmak istiyorum bunu jslintbaşarmak için kanonik yolu sudo npm install -g jslintbu çıktı ile başarıyla koştu olduğunu bulmak istiyorum :

$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)

daha sonra

$ jslint ply.js
zsh: command not found: jslint

İçimde /usr/local/share/npm/binolmadığım için $PATH.

1) brewGlobal npm binyol yolunu neden kurmadınız? Belki de oldu, ama bir şey zshyok oluyor. Bunu nerede bulabilirim?
2) Bunu yapmalı mıyım? ( :/usr/local/share/npm/binDışa aktarılanın $PATHaltına ekle ~/.zshrc)

Bu, bunu yapmak için doğru yol değil gibi görünüyor çünkü daha sonra başka bir şey yüklersem (Homebrew veya başka bir şey kullanarak) yolu ayarlamak için zsh başlangıç ​​komut dosyasına eklemem gerekecek. Sanırım bu özel örnekte npm install -g( /usr/local/binbelki de) "uygun" bir konumda doğru sembolik bağlantıları yapmama meselesi var .

Yapacağım şey /usr/local/bin, sorun yaşadığım herhangi bir program için manuel olarak sembolik bağlantılar oluşturmak ve benim amacım için yeterince iyi olmalı.

DÜZENLEME : Bunu 2019'da güncelliyorum, çünkü bu eski soru popüler ama şimdi hem kişisel iş akışım açısından hem de düğümün yüklenmesi ve çeşitli bağımlılıklarının yönetilmesi için en iyi nasıl gidileceği açısından eski.

Kişisel iş akışım şimdi nodejs.org'dan alınan yükleyiciyi sistemlere düğüm yüklemek için kullanmaktır. Aslında homebrew paketinin kendisinden daha fazla güveniyorum, çünkü dosyaların nasıl yönetileceğini en iyi biliyor. Mac veya Windows'da sistem düğümünüzü 8.10'dan 10.15'e değiştirmek istiyorsanız, işletim sisteminiz için yükleyiciyi nodejs.org'dan 10.15'e indirin. Homebrew aracılığıyla kurulan düğümü yükseltmeye çalışmanın, deneyimimde her zaman daha zor bir yaklaşım olduğu kanıtlandı.

Ayrıca, dikkat çekilmesi gereken en büyük şey, yukarıdaki jslint örneğinin npm kurulumunda gösterildiği gibi sudo kullanımının son derece cesaret kırıcı olmasıdır; Homebrew paketlerinin asla süper kullanıcı kullanılarak kurulmamalı veya etkileşime girmemesinden oldukça eminim. Gerekli olmamalı ve dosya izni baş ağrısına yol açacaktır!

Üstelik ESLint'i jslint üzerinden tavsiye ediyorum ve yıllardır jslint kullanmadım.


Teşekkürler, şimdi düzeltildi. Genellikle o kadar dikkatsiz değilim ama bu soruyu çok hızlı yazdım
Steven Lu

@DaveNewton Bunu genellikle yaparım, evet. Bu soru gerçekten özensiz bir soruydu ama en popüler sorularımdan biri.
Steven Lu

Metin kopyalamak ekran görüntüsünden daha kolay değil mi? neyse sabit.

1
@ saleemrashid1 ​​Hey, bunu yapmak istiyordum. Gerçekten okudunuz ve kopyaladınız mı? Teşekkürler.
Steven Lu

3
Evet! Rica ederim. Bir oyun üzerinde çalışıyorum ve NPM'nin bir şey indirmesini beklerken yaptım!

Yanıtlar:


308

İle genişletme PATH:

export PATH=/usr/local/share/npm/bin:$PATH

korkunç bir fikir değil. Bunu söyledikten sonra, bunu yapmak zorunda değilsiniz.

Bunu çalıştırın:

npm config get prefix

OS X'teki varsayılan değer, /usr/localyani npm'nin /usr/local/binzaten üzerinde olması gereken ikili dosyaları işaretleyeceği anlamına gelir PATH(özellikle Homebrew kullanıyorsanız).

Yani:

  1. npm config set prefix /usr/local eğer başka bir şeyse ve
  2. Kullanmayın sudoNPM ile! Göre jslint docs , sadece mümkün olmalıdır npm installbunun.

Npm'yi sudo ( sudo brew install) olarak yüklediyseniz , düz ol 'ile yeniden yüklemeyi deneyin brew install. Homebrew'un sizi sudoözgür tutmasına yardım etmesi gerekiyor .


1
Teşekkürler! Yine de küresel npmolarak yüklemeyi reddediyor jslint. npm install -g jslintbaşarısız olur. Error: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
Steven Lu

2
chown /usr/localHerhangi bir komut dosyası gerektirmeden içine link yazmak zorunda kalmam gerekmez mi sudo? Nom / düğümü veya başka bir şeyi ayarlamak için bunu izlemeye ne dersiniz ~/.local?
Steven Lu

2
TATLI! Gittim ve kullanıcı tarafından tevdi çeşitli dizinleri undid rootbenim de ~/(tarafından dir sudo rm -rüzerinde tmp/ve .npm/) ve sonradan bir npm install -g jslintgüzel çalıştı. Npm'in kendisinin bir düğüm programı olması ve benim için biraz daha iyi anladığım için şimdi takdir etmeye başladığım bir JS komut satırı konsept kanıtı biraz temiz.
Steven Lu

2
@StevenLu Evet, chown-ing /usr/localve içindeki her şeyi OS X'in See standart bir uygulamadır giderme Homebrew wiki sayfası.
Trevor Burnham

Evet benzediğini chownait ing /usr/localzaten yoksa benim makinede oluştu npmark çalışma olmadan sudoiçine bağlantıları yatırmak mümkün olmaz /usr/local/bin/vs
Steven Lu

8

Bu konuda biraz zaman geçirdim ve PATH anahtarı yardımcı olmadı. Benim sorunum burada bulunan Homebrew / düğüm / npm hata oldu - https://github.com/npm/npm/issues/3794

Düğümü Homebrew kullanarak zaten yüklediyseniz, güvenli olmadığını düşündüğünüz yorum başına **** Not'u deneyin. Benim için işe yaradı ama istenmeyen sonuçları olabilir. Ayrıca, Homebrew'un en son sürümünün npm'yi düzgün bir şekilde yüklediği görülmektedir. Yani muhtemelen ben denemek istiyorum brew update, brew doctor, brew upgrade node**** denemeden önce vb:

npm update -gf

Veya Homebrew ile düğüm kurmak ve npm çalışması yapmak için şunu kullanın:

brew install node --without-npm
curl -L https://npmjs.org/install.sh | sh

3
İnsanların küresel olarak bir güncellemeyi zorlamasını tavsiye etmek iyi bir fikir değildir.
9x14

1
İnternetteki birisinin tavsiyelerini körü körüne takip etmek iyi bir fikir değildir.
Volte

-Gf'deki kuvvet yöntemi benim için yaptı. Teşekkür ederim.
MEM

5

Demlemek kullanıyorum ve önek zaten olarak ayarlanmıştı:

$ npm config get prefix
/Users/[user]/.node

Bin ve lib klasörünün her zamanki sudo olmayan yüklemeyi engelleyen root'a ait olduğunu fark ettim, bu yüzden onları kullanıcıya tekrar sahibim

$ cd /Users/[user]/.node
$ chown -R [user]:[group] lib
$ chown -R [user]:[group] bin

Daha sonra / Users / [user] adresinde bulunan .bash_profile yolumu ekledim

PATH=$PATH:~/.node/bin

3

demlemek -g ile npm çalıştırırken bile sudo kullanmanızı gerektirmemelidir. Bu aslında yolda daha fazla sorun yaratabilir.

Genellikle, demlemek veya port, yolunuzu güncellemenize izin verir, böylece .zshrc, .bashrc, .cshrc veya kullandığınız kabuk lezzetini bozma riski yoktur.


Gerçekten demlemek gerektirmez ve kullanılmasını önermez sudo. Ben sudo kullanıyordum npm(çünkü okuduğum bir şey bana söyledi). Yolun nasıl ayarlandığını nereden arayacağımı merak ediyorum. Aslında gibi görünüyor zshyükleyici çalışır şeyin belleği (yüklenmesi sırasında yolunu hardcoding yukarı uçları zshiçine) .zshrcçok hangi ı sevme değilim
Steven Lu

Tarafından yüklenen her şey npm gerektiği kurulabilir /usr/local. /usrYol ad senin dağıtıma resmi paketler için ayrılmıştır. /usr/local/bin$ PATH ya da değil, bir zsh sorunudur.
Floby

demleme komut dosyaları başlangıç ​​komut dosyasına hiçbir şey eklemez, bu yapmanız gereken bir şeydir. örnek için bkz. madebyhoundstooth.com/blog/install-node-with-homebrew-on-os-x .
Pascal Belloncle

2

Aşağıdakileri yaparak Vue Cli no komut hatasını düzeltmeyi başardım:

  • Terminalde sudo nano ~/.bash_profile bash profilinizi düzenlemek için.
  • Ekle export PATH=$PATH:/Users/[your username]/.npm-packages/bin
  • Dosyayı kaydet ve terminali yeniden başlat
  • Şimdi kullanmak gerekir vue create my-projectve vue --versionvb

Bunu, en son Vue Cli https://cli.vuejs.org/ adresinden

Genellikle iplik kullanıyorum, ama bunu küresel olarak npm ile kurdum npm install -g @vue/cli . İsterseniz ipliği de kullanabilirsinizyarn global add @vue/cli

Not: Önceden yüklediyseniz, önce global olarak kaldırmanız gerekebilir: npm uninstall -g vue-cli

Bu yardımcı olur umarım!


1
Bu temelde benim için çalıştı. PATH = $ PATH: / Users / [kullanıcı adınız] /node_modules/.bin
Mike Carpenter


0

Koşmayı deneyin:

PATH=$PATH:~/npm/bin

ve sonra expresskomut satırında çalışarak bir test yapın . Bu benim için çalıştı.


yani ~/.npm/binböyle bir şey demek istediğinizden eminim . npmkendi evine bir dir eklenmemelidir.
Steven Lu

0

Düğüm paketlerini sudo komutunu kullanarak bağladıysanız

Ardından node_modules'ün global olarak kurulduğu klasöre gidin.

Unix sistemlerde, genel olarak kurulduklarında normalde / usr / local / lib / node veya / usr / local / lib / node_modules içine yerleştirilirler. NODE_PATH ortam değişkenini bu yola ayarlarsanız, modüller düğüm tarafından bulunabilir.

Windows XP -% USERPROFILE% \ Uygulama Verileri \ npm \ node_modules Windows 7 -% AppData% \ npm \ node_modules

ve sonra komutu çalıştırın

ls -l

Bu, tüm global düğüm_modüllerinin listesini verecektir ve bağlı düğüm modüllerini kolayca görebilirsiniz.


0

sudo brew artık bir seçenek değil, bu yüzden demlemek ile bu noktada kurarsanız 2 gerçekten iğrenç şey alacaksınız: A: /usr/local/opts/ usr / local / shared içine veya buna göre yüklemeyi sever . Bu ilk başta büyük bir anlaşma değil ama özellikle tüy bıraktığımda PATH düğümü ile ilgili sorunlar yaşadım. B: Siz bu şekilde kaldırıp yükleyene veya yığını Bitnami'den edinceye kadar sudo komutlarıyla sıkışıp kaldınız

Birden çok projeniz varsa gitmeye hazır olduğu için yığın yöntemi üzerinde bu yöntemi öneririm. Hazır MEAN yığını ile giderseniz, httpd.conf'da (bu yığında XAMPP'den daha fazla bir acı daha fazla) sanal ana bilgisayarlar kurmanız gerekecek. güncelleştirmeyi bitirdiğinizde sunucunuzu yeniden işaretlemek ve yeniden başlatmak istemiyorsanız proje.


0

Basit çözüm ...

Sadece aşağıdaki komutu yazınız:

  1. sudo npm config get prefix

    bu gibi bir şey değilse /usr/local, aşağıdaki komutu kullanarak düzeltmeniz gerekir.

  2. sudo npm config set prefix /usr/local...

Şimdi% 100 iyi çalışıyor


Spm ile sudo kaçınarak tavsiye ederim. Düzenlememe bakın.
Steven Lu
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.