Npm yüklemesi "wd'de çalıştırılamıyor" ile başarısız oldu


161

Düğüm ortamımı yeni bir Ubuntu 12.04 örneğine kurmaya çalışıyorum, Düğüm 0.8.14 zaten kurulu, ancak çalıştırmayı denediğimde sorunlarla karşılaştım npm install. Bu yüzden denediğimde npm install, onu root veya adminisrator olarak çalıştırmam gerektiğini söylüyor:

Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/coffee-script']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/coffee-script',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ 'DirWriter._create                 (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:297:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

Ancak onu sudo olarak çalıştırmayı denediğinizde şunu söylüyor:

npm WARN cannot run in wd PackNodeDev@0.0.1-166 npm install -g coffee-script node-gyp (wd=/home/ubuntu/PackNode)

Benim package.json dosyamda aşağıdaki komut dosyalarını içerir:

"scripts": {
    "preinstall": "npm install -g coffee-script node-gyp",
    "start": "node server.js",
    "test": "mocha --require should --compilers coffee:coffee-script --colors"
 },

Geriye kalan dev bağımlılıkları, hepsini kendi makineme kurduğum için geçerlidir (Mac) Bunun neden olduğuna dair bir fikri olan var mı?

Yanıtlar:


243

Dokümantasyon (ayrıca diyor burada ):

Npm kök ayrıcalıklarıyla çağrıldıysa, kullanıcı hesabını veya useryapılandırmada belirtilen kullanıcı kimliğini varsayılan olarak değiştirir nobody. unsafe-permBayrağı, root ayrıcalıklarına sahip komut dosyalarını çalıştıracak şekilde ayarlayın .

Seçenekleriniz:

  1. Run npm installile --unsafe-permbayrak:

    [sudo] npm install --unsafe-perm
    
  2. Ekle unsafe-permbayrağını adresinden Müşteri package.json:

    "config": {
        "unsafe-perm":true
    }
    
  3. Genel preinstallmodülleri yüklemek için komut dosyasını kullanmayın, bunları ayrı ayrı kurun ve ardından normali npm installkök ayrıcalıkları olmadan çalıştırın :

    sudo npm install -g coffee-script node-gyp
    npm install
    

İlgili :


2
Üzgünüm şimdiye kadar bunu görmedim. Daha önce "güvensiz-perm" yi denedim ama işe yaramadı. Sorun hala var
EH

10
Bu benim için işe yarıyor:, sudo npm install --unsafe-permancak sudo npm installdeğil, "unsafe-perm":truepackage.json'a eklememe rağmen ... Neden emin değilim
Dmitry Pashkevich

9
Bunu package.json'daki "config" özelliğine eklemek aslında "npm_package_config_unsafe_perm" ayarını yapar, böylece seçenek 2 çalışmaz. Bakınız: stackoverflow.com/questions/28763958/…
justmoon

"güvensiz-perm": doğru benim için de başarısız oldu. Utanç, nedeni varoluştan aptal yerine koymak ve şifreli, şaşırtıcı ve düşmanca bir şey vermek yerine hata mesajındaki hata ve bağlamı (kullanıcı kimliği değişikliği dahil) vermedi.
android.weasel

İken npm install --unsafe-permbenim için işler, varsayılan değiştirme hakkında ima takip etmeye çalıştım useryapılandırma. Ben de yaptım npm set user my_userve npm set group my_groupbu da ilgili girişleri kök kullanıcının .npmrcdosyasına ekliyor . Ancak sorun, node_modulesklasörün kendisinin ve alt klasörlerinin hala köke ait olmasıdır, bu yüzden bu yardımcı olmaz. Onlara root tarafından sahip olunmaması için herhangi bir yol bulamadım.
fulv

60

Benim için işe yarayan tek şey, .npmrcşunları içeren bir dosya eklemekti :

unsafe-perm = true

Aynı yapılandırmanın eklenmesinin package.jsonhiçbir etkisi olmadı.


39
docker'da:RUN npm set unsafe-perm true
Alexander Mills

WSL kullanıyorsanız sadece set unsafe-perm true yazın. Bu size yardımcı olacaktır
Stas Panyukov

26

Nodejs uygulamamı, kök kullanıcı kullanarak CentOs çalıştıran özel bir sunucuda yayınlamaya çalışırken aynı sorunu yaşadım. Aynı hata, package.json dosyamdaki "postinstall": "./node_modules/bower/bin/bower install" tarafından tetiklendiğinden, benim için çalışan tek çözüm, hatayı önlemek için her iki seçeneği de kullanmaktır:

1: bower install komutu için --allow-root seçeneğini kullanın

"postinstall": "./node_modules/bower/bin/bower --allow-root install"

2: npm install komutu için --unsafe-perm seçeneğini kullanın

npm install --unsafe-perm

12

Burada OP, bu soruyu ilk sorduğumdan beri düğüm hakkında çok şey öğrendim. Dmitry'ın cevabı çok yardımcı olsa da, nihayetinde benim için yaptığım şey doğru izinlerle node kurmak oldu.

Herhangi bir paket yöneticisi kullanarak düğüm kurmamanızı, bunun yerine normal izinlere sahip yerel bir dizinde yer alması için kendiniz derlemenizi şiddetle tavsiye ederim.

Bu makale, bunun nasıl yapılacağına dair çok net bir adım adım talimat sağlar:

https://www.digitalocean.com/community/tutorials/how-to-install-an-upstream-version-of-node-js-on-ubuntu-12-04


2

Bunu sahibini değiştirerek /usr/localve bunun ~/Users/user-namegibi düzelttim :

sudo chown -R my_name /usr/local

Bu, her şeyi olmadan yapmama izin verdi sudo

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.