"Wd में नहीं चल सकता" के साथ Npm स्थापित विफल


153

मैं अपने नोड वातावरण को एक नए Ubuntu 12.04 उदाहरण पर स्थापित करने की कोशिश कर रहा हूं, नोड 0.8.14 पहले से ही स्थापित है, लेकिन जब मैं चलाने की कोशिश करता हूं तो मैं समस्याओं में भाग गया npm install। इसलिए जब मैं कोशिश करता हूं npm install, तो यह कहता है कि मुझे इसे रूट या एडमिन के रूप में चलाने की जरूरत है:

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.

लेकिन जब इसे सूडो के रूप में चलाने की कोशिश की जाती है, तो यह निम्नलिखित कहता है:

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

मेरे पैकेज.जसन में, इसमें निम्नलिखित स्क्रिप्ट शामिल हैं:

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

बाकी सब निर्भरताएँ मान्य हैं क्योंकि मैं अपनी मशीन (मैक) पर यह सब ठीक कर रहा हूं। क्या किसी को कोई सुराग है कि ऐसा क्यों हो रहा है?

जवाबों:


231

प्रलेखन कहते हैं (यह भी यहाँ ):

यदि npm को रूट विशेषाधिकारों के साथ लागू किया गया था, तो यह यूआईडी को उपयोगकर्ता खाते में बदल देगा या userकॉन्फ़िगरेशन द्वारा निर्दिष्ट यूआईडी , जो कि चूक करता है nobodyunsafe-permरूट विशेषाधिकार के साथ स्क्रिप्ट चलाने के लिए ध्वज सेट करें ।

आपके विकल्प हैं:

  1. ध्वज के npm installसाथ चलाएँ --unsafe-perm:

    [sudo] npm install --unsafe-perm
  2. unsafe-permध्वज को अपने में जोड़ें package.json:

    "config": {
        "unsafe-perm":true
    }
  3. preinstallवैश्विक मॉड्यूल को स्थापित करने के लिए स्क्रिप्ट का उपयोग न करें , उन्हें अलग से इंस्टॉल करें और फिर npm installरूट विशेषाधिकार के बिना नियमित चलाएं :

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

संबंधित :


2
क्षमा करें, मैंने अब तक यह नहीं देखा। मैंने पहले "असुरक्षित-परमिट" की कोशिश की, लेकिन यह भी काम नहीं किया। समस्या अभी भी मौजूद है
EH

10
यह मेरे लिए काम करता है: sudo npm install --unsafe-permहालाँकि sudo npm install, हालांकि, मैंने "unsafe-perm":truepackage.json में जोड़ा नहीं ... यकीन नहीं क्यों
दिमित्री पश्केविच

8
पैकेज में इसे "कॉन्फ़िगर" संपत्ति में जोड़ना। वास्तव में "npm_package_config_unsafe_perm" सेट करता है, इसलिए विकल्प 2 काम नहीं करता है। देखें: stackoverflow.com/questions/28763958/…
justmoon

'असुरक्षित-परमिट': मेरे लिए भी सच असफल रहा। शर्म की बात है कि यह त्रुटि संदेश में त्रुटि और संदर्भ (इसके यूआईडी परिवर्तन सहित) नहीं दिया, इसके बजाय अस्तित्व के कारण को बाहर निकालने और कुछ गुप्त, आश्चर्यजनक और शत्रुतापूर्ण कारण दे रहा है।
Android.weasel

npm install --unsafe-permमेरे लिए काम करते समय , मैंने डिफ़ॉल्ट userकॉन्फ़िगरेशन को बदलने के बारे में निहितार्थ का पालन करने की कोशिश की । तो मैंने किया npm set user my_userऔर npm set group my_group, जो रूट उपयोगकर्ता की .npmrcफ़ाइल में संबंधित प्रविष्टियाँ जोड़ता है । लेकिन समस्या यह है कि node_modulesफ़ोल्डर और उसके उप-फ़ोल्डर अभी भी रूट के स्वामित्व में हैं, इसलिए यह मदद नहीं करता है। मैं किसी भी तरह से समझ नहीं सका कि उनके पास जड़ नहीं है।
फुल्व

53

केवल एक चीज जो मेरे लिए काम करती थी, उसमें एक .npmrcफाइल शामिल थी:

unsafe-perm = true

समान कॉन्फ़िगरेशन जोड़ने से package.jsonकोई प्रभाव नहीं पड़ता है।


36
कर्ता में:RUN npm set unsafe-perm true
अलेक्जेंडर मिल्स

अगर आप WSL का उपयोग कर रहे हैं तो बस असुरक्षित-परमिट टाइप करें। यह आपकी मदद करेगा
स्टास पन्युकोव

26

रूट यूजर का उपयोग करते हुए CentOs चलाने वाले निजी सर्वर में अपने नोडज एप्लिकेशन को प्रकाशित करने का प्रयास करते समय मैंने उसी समस्या का अनुभव किया है। मेरे पैकेज में "पोस्ट इंस्टॉलेशन": "./ode_modules/bower/bin/bower इंस्टॉल" द्वारा एक ही त्रुटि को निकाल दिया जाता है। इसलिए फ़ाइल में एकमात्र समाधान जो मेरे लिए काम कर रहा था, वह है त्रुटि से बचने के लिए दोनों विकल्पों का उपयोग करना:

1: bower install कमांड के लिए --allow-root विकल्प का उपयोग करें

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

2: npm install कमांड के लिए --unsafe-perm विकल्प का उपयोग करें

npm install --unsafe-perm

12

यहाँ ओपी, मैंने नोड के बारे में बहुत कुछ सीखा है क्योंकि मैंने पहली बार यह सवाल पूछा था। हालांकि दिमित्री का जवाब बहुत मददगार था, लेकिन आखिरकार मेरे लिए यह सही अनुमतियों के साथ नोड स्थापित करने के लिए किया गया था।

मैं किसी भी पैकेज प्रबंधकों का उपयोग करके नोड स्थापित करने की अत्यधिक अनुशंसा नहीं करता हूं, बल्कि इसे स्वयं संकलित करने के लिए कहता हूं ताकि यह स्थानीय निर्देशिका में सामान्य अनुमतियों के साथ रहता हो।

यह आलेख बहुत स्पष्ट चरण-दर-चरण निर्देश प्रदान करता है कि ऐसा कैसे करें:

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


2

मैं का स्वामित्व परिवर्तित करके इसे ठीक किया गया /usr/localऔर ~/Users/user-nameइसलिए की तरह:

sudo chown -R my_name /usr/local

इसने मुझे बिना सब कुछ करने की अनुमति दी sudo

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.