NPM bağımlılıkları yükleyemiyor - Kilitlenmemiş bir şeyin kilidini açmayı deneyin


192

Package.json dosyamda bir npm yüklemesi çalıştırmaya çalışıyorum, ancak çok fazla sorun yaşıyorum. Tüm bağımlılıklarımda "Hata: Kilitlenmemiş XXX kilidini açmaya çalış" mesajı görüntüleniyor. İşte bunlardan biri:

Error: Attempt to unlock tbd@~0.6.4, which hasn't been locked
        at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1304:11)
        at cb (/usr/local/lib/node_modules/npm/lib/cache.js:646:5)
        at /usr/local/lib/node_modules/npm/lib/cache.js:655:20
        at /usr/local/lib/node_modules/npm/lib/cache.js:1290:7
        at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
        at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
        at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
        at Object.oncomplete (fs.js:107:15)

Eğer sudo olarak çalıştırmayı denersem, daha fazla ilerlemek ve bazı paketleri yüklemeye başlamak gibi görünüyor, ancak bunun yerine yeni hatalar açılır:

> chokidar@0.8.1 postinstall /Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/chokidar
> node setup-deps.js

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied

node.js:811
    var cwd = process.cwd();
                      ^
Error: EACCES, permission denied
    at Function.startup.resolveArgv0 (node.js:811:23)
    at startup (node.js:58:13)
    at node.js:902:3
npm ERR! error rolling back Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q'
npm ERR! error rolling back  karma@0.10.9 { [Error: ENOTEMPTY, rmdir '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q']
npm ERR! error rolling back   errno: 53,
npm ERR! error rolling back   code: 'ENOTEMPTY',
npm ERR! error rolling back   path: '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/q' }
npm ERR! Error: ENOENT, chown '/Users/tkirchner/Documents/Projects/mm-datatable/node_modules/karma/node_modules/socket.io/lib/socket.io.js'

Son zamanlarda düğüm ve npm kurulumlarımı güncelledim. Yani belki de bununla bir ilgisi var. Ayrıca, gelişimimin çoğu ofisteydi ve bugün VPN üzerinde çalışıyorum, belki de bununla bir ilgisi var.

Herhangi bir fikir?


İşte package.json dosyası, eğer yardımcı oluyorsa ... (iç çekiş), nvm, yapıştırmam mümkün değil .. çok fazla karakter.
TJ Kirchner

hangi işletim sistemini kullanıyorsunuz
wayne

Yanıtlar:


421

Photusenigma'ya göre: https://github.com/npm/npm/issues/4815

Bu komutları bir terminal penceresinde çalıştırın (not - $ USER parçasının yerini ALMAYIN ... bu bir linux komutu kullanıcısı olsun!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/local/lib/node_modules

... ve ... bir mac'taysanız (benim gibi) ve bu komutları çalıştırdıktan sonra hala hatalar görüyorsanız, bu sonuncuyu çalıştırın ve iyi olmalısınız. (Bunu yapmadan önce test etmenizi öneririz. Gerçekten gerekli olmadığı sürece ENTIRE / usr / local dizinindeki izinleri değiştirmeyi sevmiyorum!)

sudo chown -R $USER /usr/local

7
Benim için çalıştı teşekkürler! Düğüm_modüllerim klasörü farklı bir noktadaydı, belki bu başka birine yardım edersudo chown -R `whoami` /usr/lib/node_modules/
Justen

4
Tuhaf bir şekilde, özyinelemeli chownizinleri ~/.npm/_locksbenim için değiştirmedi . Benimkini çalıştırarak çalışma varsudo chown -R myname ~/.npm/_locks
Sitati

7
Bu çözümün çok kullanıcılı platformlar için hoş olmadığını unutmayın. İlk komut tamam, ikincisi sistem dosyalarının standart kullanıcı sahibi olun. / usr / local / lib / node_modules yalnızca --global seçeneğiyle npm tarafından kullanılır, yani sudo da kullanılır. Ne yazık ki, npm kullanan bazı kurulum komut dosyaları hem global hem de global olmayan npm komutlarını karıştırıyor ... Bu karışıklık yaratılıyor.
Fafaman

5
Kabul ediyorum, tek ihtiyacınız olan ilk komut. Diğer kullanıcılardan kaçının çünkü bunlar gerçekten kullanıcılara ait olmamalıdır.
pyrospade

2
ikinci çizginin "etkilerini" tersine çevirmenin bir yolu var sudo chown -R $USER /usr/local/lib/node_modulesmı? İyi bir fikir olmadığını okumadan önce koştum ..
shaneparsons

153

Bu öğleden sonra bir iş arkadaşıyla çalıştım ve sorunun ne olduğunu anladım. Giriş dizinimdeki ".npm" klasörü kendim yerine kök kullanıcıya aitti. Buna neden olan şeyden emin değilim. Belki bir noktada kök yönetici olarak düğüm veya npm yükledim. Her halükarda yeni koştum sudo chown -R [username] .npmve sonunda npm installprojelerimden tekrar komut verebildim !


11
Aynı komutu aynı ~/tmp/zamanda veya Düğümün geçici bir konum olarak kullandığı herhangi bir konumu çalıştırırsanız da yardımcı olur
Jason

1
Cevabınız için teşekkür ederim! Hata mesajı kötü olduğu için bana biraz baş ağrısı kurtardı. Ama diyorum ki, npm bunu varsayılan olarak yapıyor olmalı, çünkü kendim kök altına yüklemediğimden eminim. Ve tamlık için -R <kullanıcı adı> .npm
crowmagnumb

Ben yardımcı olabilir sevindim :) Ve, iyi yakalamak! Bunu söylemek için cevabımı değiştireceğim.
TJ Kirchner

Hayat kurtarıcı! Teşekkür ederim
Matthew Cullum

21

Benim durumumda sorun, HOME dizini olmayan bir kullanıcıyla npm'yi çağırıyordu, bu nedenle aşağıdaki komut başarısız olurdu:

sudo -u someUser npm install

Çözüm, someUseryazma erişimi olan bir HOME dizini sağlamaktır :

sudo -u someUser HOME=/some/directory npm install

Bu benim için gerçekten işe yaradı, çünkü kudos ve teşekkürler. Üretime dağıtıyorum ve kullanıcının (zaten bulabildiğim) bir .npm dizini bile yoktu
Stuart Watt

"Chronos" kullanıcısıyla ChromeOS üzerinde çalışır.
Kyle Coberly

sudo -u someUser -iYeni bir giriş kabuğu başlatan belirterek bu sorunu çözebildim. Bu biraz daha baktı ve npm'de önbellek kodu varsayılan olarak tahmin ediyorum npm.cache değişkeni kullanır $HOME/.npm/. sudo, yapılandırmaya ve komut satırı seçeneklerinin varlığına veya yokluğuna bağlı olarak HOME değişkeninin ayarladığı şeyle farklı davranışlara sahip olabilir.
jgibson

11

Aynı sorun vardı ve kabul edilen cevaba göre emirleri değiştirerek düzelttim:

sudo chown -R $USER ~/.npm

Ancak, bir sistem kaynağının ( sudo chown -R $USER /usr/local/lib/node_modules) izinlerini düşürdüğü için ikinci komuttan kaçınılmalıdır . İyi bir fikir değil.

Kayıt için: Unix Sistem Kaynakları/usr/local anlamına gelen "usr" .


1
Bu muhtemelen yeni bir cevap olarak değil, kabul edilen cevap hakkında bir yorum olmalıdır.
Kmeixner

Bu cevabın yazarı bunu biliyor ama cevabını güncellemedi, bu yüzden ayrı bir cevabın çok garanti altında olduğunu söylüyorum.
Gui Prá

4

Bunların hiçbiri işe yaramadı. Aşağıdakileri yaparak kelimenin tam anlamıyla kök olarak çalıştırmak zorunda kaldım:

sudo su -
sudo npm install forever -g

Sonra paket Linux Ubuntu 14.04 üzerine kuruldu.


Gerçekten npm'yi root olarak çalıştırmamalısınız!
Antoine 'hashar' Musso


1

Çözümüm:

sudo chown -R $USER /usr/local/lib/node_modules/NAMEOFMODULE

benim durumumda:

sudo chown -R $USER /usr/local/lib/node_modules/appium/

Ama sonunda aynı problemi alıyordum

npm cache clean

işe yaradı !


0

Aynı sorunu vardı ve npm ilgili dosyaları ve dizinleri saatlerce izin / sahiplik düzeltmeye çalıştı ama bu konuda hiçbir şansım yoktu.

Aniden var olmayan bir dizini işaret eden bir ~/.npmrcdosyaya sahip olduğumu fark ettim cache. cacheVarsayılan önbellek konumunu kullanmak için bu özellik kaldırıldı ve şimdi çözüldü.


0

feragat

Ben bir Windows kullanıcısıyım. Ancak ekibim ve ben, npm kurulum hatalarıyla ilgili bir dizi sorunla karşılaştık.

sorunlar

Aşağıda, öğrenilen derslerin bir listesi ve bizi her zaman kurtaran olası radikal bir çözüm yer almaktadır:

  1. node_modules , npm yerel kurulum dizini, 255 karakterden uzun yolları işleyememe gibi işletim sisteminin bir eksikliği ile değiştirilmeye karşı korunur .
  2. Klasör bir komut satırı aracıyla silinirse, klasör gezginde, erişmeye çalışırken bir dizi izin hatası verdiği gibi görünebilir.
  3. Virüsten koruma ve / veya yerel ilke yöneticinize bağlı olarak, node_modules klasörünü oluşturabilir ve daha sonra bir dizi yükleme hatasıyla sonuçlanan erişimini veya izinlerini oluşturabilirsiniz.
  4. Aşağıdakilerle ilgili olası sorunlar hakkında daha fazla bilgi edinmek için npm günlüklerini etkinleştirin:

    npm install --loglevel verbose

radikal

Rimraf'ı global olarak kurun

 npm install rimraf -g

Rimraf'ı node_modules üzerinde çalıştırın :

rimraf yourDir/node_modules

Ardından koşmayı deneyin:

npm install

Uyarı!

Veya orada eksikliği. Komutu takip edenlere son derece dikkat edin rimraf. Hiçbir uyarı, bilgi istemi yok, hiçbir şey yok. Dizini yerin evresinden temizler, sanki hiç orada değilmiş gibi siler. Kendi sorumluluğunuzdadır deneyin.

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.