npm sudo के बिना त्रुटि फेंकता है


1285

मैंने नोड और पैकेज को ndjs.org पर पैकेज के माध्यम से अभी-अभी स्थापित किया है और जब भी मैं npm के साथ कुछ खोजने या स्थापित करने का प्रयास करता हूं, तो यह निम्न त्रुटि फेंकता है, जब तक कि मैं कमांड को sudo नहीं करता। मुझे लगता है कि यह एक अनुमति मुद्दा है? मैं पहले से ही एडमिन हूं।

npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!  { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/chietala/npm-debug.log
npm ERR! not ok code 0

35
कृपया NVM का उपयोग करके समाधान पर विचार करें : stackoverflow.com/a/24404451/1480391 (अनुमतियों के साथ हैक करने के बजाय)
Yves M.

2
@janaspage आप एनपीएम (नोड पैकेज मैनेजर) के माध्यम से नोड या एनवीएम (नोड संस्करण प्रबंधक) स्थापित नहीं कर सकते , यह गैर समझदारी है। एनपीएम नोड के भीतर आता है (यह उसी समय स्थापित होता है)। विकिपीडिया पृष्ठ पर एक नजर डालें: en.wikipedia.org/wiki/Npm_(software)
Yves M.

5
अंत में इससे बेहतर हल sudo chown: github.com/sindresorhus/guides/blob/master/…
दिमित्री जैतसेव

OSX के तहत और 0official pkg intaller के साथ नोड इंस्टॉल करने से यह समाधान काम नहीं करता था। मैंने इसके बजाय इसका उपयोग किया: stackoverflow.com/a/34968008/675565
fmquaglia

2
यह समस्या और समाधान बताता है: docs.npmjs.com/getting-started/fixing-npm-permissions
n00b

जवाबों:


2268

यह आपके होम डायरेक्टरी में अनुमतियों के मुद्दे की तरह दिखता है। .Npm निर्देशिका निष्पादित करने के स्वामित्व को पुनः प्राप्त करने के लिए:

sudo chown -R $(whoami) ~/.npm

102
मैंने सोचा था कि whoamiयह एक प्लेसहोल्डर था, लेकिन यह वस्तुतः के रूप में टाइप किया गया काम करता है, इसलिए यह एक चर होना चाहिए जो मुझे समझ में नहीं आता है।
सिंपलजी

127
whoami एक वास्तविक शेल कमांड en.wikipedia.org/wiki/Whoami है । चारों ओर के बैकटिक्स whoamiयह सुनिश्चित करते हैं कि इसे सही तरीके से निष्पादित किया जाए और फिर इसे चाउन कमांड में रखा जाए
नूह

13
आप स्वयं भी अपना उपयोगकर्ता नाम निर्दिष्ट कर सकते हैं। यदि आपका उपयोगकर्ता नाम "simpleeascouldbe" है, तो कमांड होगाsudo chown -R simpleascouldbe ~/.npm
Noah

13
npm की आवश्यकता नहीं है और न ही आपको sudo का उपयोग करना चाहिए - विशेष रूप से @HberLZ के नीचे दिए गए उत्तर को देखें: उनके बारे में 2 विकल्प: .configure --prefix = xxxxxx
Scott Stensland

9
@ChristopherWill: यह सिस्टम निर्देशिका के स्वामित्व को नहीं बदल रहा है। यह उपयोगकर्ता के घर निर्देशिका में निर्देशिकाओं के स्वामित्व को बदल रहा है, जिसे उपयोगकर्ता के स्वामित्व में होना चाहिए।
user4815162342

619

अनुमतियां करते समय उपयोग किया स्थापित करने नोड जब अपने लेखन में की तरह काम करने की आवश्यकता होगी NPM निर्देशिका ( npm link, npm install -g, आदि)।

आपने संभवतः रूट इंस्टॉलेशन के साथ नोड इंस्टॉलेशन चलाया है, इसीलिए ग्लोबल पैकेज इंस्टॉलेशन आपको रूट करने के लिए कह रहा है।


समाधान 1: एनवीएम

अनुमतियों के साथ हैक न करें, नोड को सही तरीके से स्थापित करें।

एक विकास मशीन पर, आपको रूट को रूट अनुमतियों के साथ स्थापित और चलाना नहीं चाहिए, अन्यथा जैसी चीजें npm link, npm install -gउसी अनुमतियों की आवश्यकता होगी।

एनवीएम (नोड संस्करण प्रबंधक) आपको रूट अनुमति के बिना नोड स्थापित करने की अनुमति देता है और आपको उनके साथ आसानी से खेलने के लिए नोड के कई संस्करण स्थापित करने की अनुमति देता है .. विकास के लिए बिल्कुल सही।

  1. स्थापना रद्द करें नोड (रूट अनुमति की आवश्यकता होगी)। यह आपकी मदद कर सकता है।
  2. फिर इस पृष्ठ पर निर्देशों का पालन करते हुए एनवीएम स्थापित करें
  3. एनवीएम के माध्यम से नोड स्थापित करें: nvm install node

अब npm link, npm install -gआपको रूट होने की आवश्यकता नहीं होगी।

संपादित करें: https://docs.npmjs.com/getting-started/fixing-npm-permissions पर भी देखें


समाधान 2: किसी दिए गए उपयोगकर्ता के लिए विश्व स्तर पर पैकेज स्थापित करें

अनुमतियों के साथ हैक न करें, विश्व स्तर पर सही तरीके से npm संकुल स्थापित करें।

यदि आप OSX या लिनक्स पर हैं, तो आप अपने वैश्विक पैकेज और सेटअप के लिए एक उपयोगकर्ता समर्पित निर्देशिका बना सकते हैंnpm और nodeयह जानने के लिए कि विश्व स्तर पर स्थापित पैकेज कैसे खोजे जा सकते हैं।

सुडोकू के बिना विश्व स्तर पर एनपीएम मॉड्यूल स्थापित करने के कदम से कदम निर्देश के लिए इस महान लेख की जाँच करें ।

यह भी देखें: पर NPM के दस्तावेज़ NPM अनुमतियाँ फिक्सिंग


32
सभी समाधानों में से NVM समाधान यहाँ पोस्ट किया मेरे लिए सबसे अच्छा परिणाम प्रदान किया। अनुमतियों के साथ रहने के बजाय NVM का उपयोग करने की अत्यधिक अनुशंसा करें।
वेनिनकोड जू

9
इन निर्देशों ने बहुत अच्छा काम किया। हालाँकि, आप संभवत : नोडज को अनइंस्टॉल करने से पहले सुडो के साथ आपके द्वारा इंस्टॉल किए गए मॉड्यूल को हटाना चाहेंगे : npm ls -gp | awk -F/ '/node_modules/ && !/node_modules.*node_modules/ {print $NF}' | xargs npm -g rm- मुझे नोड्ज को फिर से खोलना होगा और एक रूट शेल में और उन्हें अनइंस्टॉल करना होगा, अन्यथा आप यो, ग्रंट, आदि के लिए सहानुभूति रखना जारी रखेंगे।
ब्रूनो फ्लेवियो

4
यह सबसे अच्छा समाधान है, मैंने सभी मॉड्यूल को सबसे पहले sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g stackoverflow.com/a/22290968/1449157 पर हटा दिया npmऔर फिर इसे हटा दियाnvm
Fabio Antunes

3
नोड के लिए निर्देश की स्थापना रद्द करने के लिए इस SO उत्तर का उपयोग करें stackoverflow.com/a/11178106/480031
3

3
उत्पादन मशीन पर नोड स्थापित करने के लिए रूट का उपयोग करना क्यों ठीक है?
ब्रूनो पेरेस

401

इसके अलावा आपको node_modulesनिर्देशिका में लिखित अनुमति की आवश्यकता होगी :

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

7
साथ ही ~/tmpमेरे लिए निर्देशिका है।
ज्ञातव्य

122
मुझे नहीं पता कि यह अभी भी क्यों उठता है। किसी विशेष उपयोगकर्ता के लिए सिस्टम निर्देशिकाओं के स्वामित्व को बदलने के लिए यह बहुत बुरा अभ्यास है! कृपया अन्य समाधानों के लिए नीचे उत्तर देखें (जैसे नोड उपयोगकर्ताओं के लिए एक अलग समूह बनाना)।
क्रिस्टोफर

1
मेरे पास नहीं है node_modulesमें /usr/local/lib/। WTF?
कॉनर लिच

27
आप जो भी करते हैं - ABSOLUTELY 'sudo chmod -R whoami' को / usr / local / lib या / usr / lib पर नहीं चलाते हैं / आप अपनी sudoers फ़ाइल को बर्बाद कर देंगे और आप खुद से नफरत करेंगे।
कोडेनिन्जा

7
हर कोई, कृपया इसे डाउनवोट करें ... Then I ran sudo chown -R $USER /* and everything was fine- नहीं - आप अपनी मशीन को बर्बाद कर रहे हैं।
कॉमनपाइक

75

"सिस्टम-ग्लोबल" फ़ोल्डरों पर स्वामी को बदलना एक हैक है। एक नई स्थापना पर, मैं "उपयोगकर्ता-वैश्विक" कार्यक्रमों के लिए पहले से ही उपयुक्त स्थान का उपयोग करने के लिए एनपीएम को कॉन्फ़िगर करूंगा :

npm config set prefix ~/npm

फिर सुनिश्चित करें कि आप उस फ़ोल्डर को अपने पथ में जोड़ें:

export PATH="$PATH:$HOME/npm/bin"

देखें @ErikAndreas ' जवाब के लिए NPM मॉड्यूल sudo के बिना विश्व स्तर पर स्थापित नहीं होगा और लंबे समय तक कदम-दर-चरण मार्गदर्शिका द्वारा @sindresorhus भी सेट के साथ $MANPATH


मैं दृढ़ता से सहमत हूँ, सिवाय इसके कि मैं सुझाव देता हूँ कि यदि आप अभी उपसर्ग निर्धारित करते हैं $HOMEतो आमतौर पर आपकी .profileस्क्रिप्ट $PATHअगली बार जब आप इसे स्रोत का ध्यान रखेंगे (जैसे अगली बार जब आप लॉग इन करेंगे)।
जेस ऑस्टिन

@JessAustin: शायद, लेकिन यह आपके लिए अधिक अव्यवस्था भी लाएगा और $HOMEअन्य (भविष्य?) एनपीएम फ़ाइलों / सबफ़ोल्डर्स के साथ हस्तक्षेप कर सकता है। अलग-अलग पैकेज प्रबंधकों / भाषाओं / बिल्ड सिस्टम से बायनेरिज़ को अलग रखने के लिए प्राथमिकता दें, और $PATHइसके बजाय स्पष्ट रूप से (एक लॉगिन समय स्क्रिप्ट में) सेट करें ।
जोएल पुर्रा सेप

एह, अव्यवस्था? हम विश्व स्तर पर स्थापित मॉड्यूल के बारे में बात कर रहे हैं ~/lib/node_modules, उनके संबद्ध सीएलआई के साथ, यदि कोई मौजूद है, तो ~/bin। कई उपयोगकर्ताओं के लिए, खासकर यदि उनके पास जड़ नहीं है, दोनों ~/binऔर ~/libपहले से मौजूद हैं।
जेस ऑस्टिन

@JessAustin: यह पुस्तकालयों और बायनेरिज़ के लिए नाम टकराव का मामला है। मान लीजिए कि आप एनपीएम को बायनेरिज़ में डालने के लिए इंगित ~/binकरते हैं और फिर एक या दो अतिरिक्त पैकेज प्रबंधकों के लिए भी ऐसा ही करते हैं। यह आज या कल नहीं हो सकता है, लेकिन एक स्पष्ट जोखिम है कि विभिन्न प्रबंधकों के दो पैकेजों में एक नाम टकराव है और एक-दूसरे की फाइलों को अधिलेखित कर सकते हैं। मेरे लिए अलग उपसर्ग होने के लिए यह एक अच्छा पर्याप्त मामला है। (ठोस उदाहरणों की सराहना की जाएगी।)
जोएल पुरा

1
इसे सर्वश्रेष्ठ उत्तर के रूप में स्वीकार किया जाना चाहिए। सिस्टम-ग्लोबल फ़ोल्डर्स बदलना खतरनाक हो सकता है।
व्लादिमीर मार्टन

58

जब मैं बूटस्ट्रैप 3 के लिए अपने सीएसएस को संकलित करने के लिए Recess ( https://github.com/twitter/recess ) स्थापित करते समय इसका सामना किया ।

जब अवकाश स्थापित करें:

-npm install recess -g
  1. आपको अपनी homeनिर्देशिका में अनुमतियों को अनलॉक करने की आवश्यकता है , जैसे नूह कहता है:

    sudo chown -R `whoami` ~/.npm
  2. आपको node_modulesनिर्देशिका को लिखने की अनुमति भी चाहिए , जैसे कि Xilo कहता है, इसलिए यदि यह अभी भी काम नहीं कर रहा है, तो कोशिश करें:

    sudo chown -R `whoami` /usr/local/lib/node_modules
  3. यदि आप अभी भी त्रुटियां देख रहे हैं, तो आपको अनुमति को सही /usr/localकरने की भी आवश्यकता हो सकती है :

    sudo chown -R `whoami` /usr/local

कृपया ध्यान दें कि जैसा कि इस पोस्ट में दर्शाया गया/usr/local/ है कि वास्तव में एक सिस्टम डिअर नहीं है यदि आप मैक पर हैं, तो, यह उत्तर मैक उपयोगकर्ताओं के लिए वास्तव में "सुरक्षित" है। हालाँकि, यदि आप लिनक्स पर हैं, तो देखें कि क्रिस्टोफर विल एक बहु-उपयोगकर्ता के अनुकूल, सिस्टम डीआईआर सेफ़ (लेकिन अधिक जटिल) समाधान के लिए नीचे का उत्तर देगा


35
यह विचार अच्छा नहीं है। आप शायद नहीं चाहते कि सिस्टम निर्देशिका किसी विशेष उपयोगकर्ता के स्वामित्व में हो। गंभीर सुरक्षा चिंताओं के अलावा यह भी बहुउपयोगी संगत नहीं है।
क्रिस्टोफर विल

2
हाँ, लेकिन यह एक विकास के माहौल के लिए एक महान समाधान है +2, खासकर यदि आप पहले से ही नोड स्थापित कर चुके हैं। जेएस और सिर्फ रॉकिंग रखने की आवश्यकता है!
elliotrock

आपको वास्तव में अपने घर निर्देशिका के बाहर पैकेज नहीं चाहिए
बेन

1
यदि यह आपके होम फोल्डर में नहीं है, तो इसके विपरीत किसी भी दावे के बावजूद यह एक सिस्टम डायरेक्टरी है। सिर्फ इसलिए कि इसका उपयोग OS X द्वारा नहीं किया गया है, इसका मतलब यह नहीं है कि यह सिस्टम निर्देशिका नहीं है।
अमीर रेमर

53

ध्यान रहे!!! ध्यान रहे!!! ध्यान रहे!!!

सुरक्षा-जोखिम के कारण chown या chmod समाधान नहीं है।

इसके बजाय यह करें:

अगर आप कॉल करते हैं तो पहले चेक करें कि npm कहां पर है?

npm config get prefix

यदि / usr लौटाया जाता है, तो आप निम्न कार्य कर सकते हैं:

mkdir ~/.npm-global
export NPM_CONFIG_PREFIX=~/.npm-global
export PATH=$PATH:~/.npm-global/bin

यह आपके होम-डायरेक्टरी में एक npm-Directory बनाता है और npmइसे इंगित करता है।

इस परिवर्तन को स्थायी करने के लिए, आपको अपने .bashrc में निर्यात-कमांड जोड़ना होगा:

echo -e "export NPM_CONFIG_PREFIX=~/.npm-global\nexport PATH=\$PATH:~/.npm-global/bin" >> ~/.bashrc

क्या मुझे केवल विकल्प 2 पर स्विच करना चाहिए अगर मुझे मिल गया / usr?
अल्बर्ट लॉर

3
ध्यान दें कि अंतिम कमांड वास्तव में की सामग्री को आउटपुट करता है $PATH, न कि स्ट्रिंग को। आपको उसे बदलना चाहिए।
वेलूरिया

1
यह तय! धन्यवाद। मैं हो रही थी 'अनुमति नहीं दी, अनलिंक' / usr / bin / <pkg> '
valbaca

1
यह सबसे अच्छा जवाब है। यह समस्या को हल करने का अनुशंसित तरीका है।
पाउलो कोगी - मोनिका

एक सुरक्षा जोखिम क्यों बढ़ रहा है?
फ्रैंक

40

अन्य उत्तर एक विशिष्ट उपयोगकर्ता के लिए सिस्टम निर्देशिकाओं के स्वामित्व या अनुमतियां बदलने का सुझाव दे रहे हैं। मैं ऐसा करने से बहुत उकता गया हूं, यह बहुत अजीब हो सकता है और पूरी व्यवस्था को गड़बड़ कर सकता है!

यहां एक अधिक सामान्य और सुरक्षित दृष्टिकोण है जो बहु-उपयोगकर्ता का भी समर्थन करता है।

नोड-उपयोगकर्ताओं के लिए एक नया समूह बनाएं और आवश्यक उपयोगकर्ताओं को इस समूह में जोड़ें। फिर इस समूह के लिए नोड-निर्भर फ़ाइलों / निर्देशिकाओं का स्वामित्व सेट करें।

# Create new group
sudo groupadd nodegrp 

# Add user to group (logname is a variable and gets replaced by the currently logged in user)
sudo usermod -a -G nodegrp `logname`

# Instant access to group without re-login
newgrp nodegrp

# Check group - nodegrp should be listed as well now
groups

# Change group of node_modules, node, npm to new group 
sudo chgrp -R nodegrp /usr/lib/node_modules/
sudo chgrp nodegrp /usr/bin/node
sudo chgrp nodegrp /usr/bin/npm

# (You may want to change a couple of more files (like grunt etc) in your /usr/bin/ directory.)

अब आप अपने मॉड्यूल को उपयोगकर्ता के रूप में आसानी से स्थापित कर सकते हैं

npm install -g generator-angular

कुछ मॉड्यूल (ग्रन्ट, बोवर, यो आदि) को अभी भी रूट के रूप में स्थापित करने की आवश्यकता होगी। इसका कारण यह है कि वे / उपयोगकर्ता / बिन / में सहानुभूति बनाते हैं।

संपादित करें

3 साल बाद मैं नोड संस्करण प्रबंधक का उपयोग करने की सलाह दूंगा । यह आपको बहुत समय और परेशानी से बचाता है।


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

1
लिनक्स पर, मैं आमतौर पर staffअपने देव फ़ोल्डरों को अनुमति देने के लिए अंतर्निहित समूह का उपयोग करता हूं। इसके अलावा, यह chmod g+ws node_modulesसुनिश्चित करने के लिए चलाने के लिए एक अच्छा विचार है कि आपके समूह ने पढ़ने / लिखने की अनुमति दी है।
जैकव्सवर्ल्ड

@jackvsworld मुझे स्टाफ समूह की जानकारी नहीं थी। मुझे लगता है कि यह एक अधिक सुगम समाधान होगा, क्योंकि किसी ने एक नया काल्पनिक समूह नहीं बनाया है .. हालांकि यह कम स्पष्ट होगा। लेकिन इस इनपुट के लिए धन्यवाद।
क्रिस्टोफर विल

आम तौर पर बोलना, /usr/libआपके सिस्टम पैकेज मैनेजर के नियंत्रण में है और आपको वहां कोई बदलाव नहीं करना चाहिए।
अमीर रेमर

23

किसी त्रुटि के साथ अनुमतियों को ठीक करने का आधिकारिक दस्तावेज https://docs.npmjs.com/getting-started/fixing-npm-permissions पर स्थित है ।npm installEACCES

.pkgOSX पर इंस्टॉलर का उपयोग करके नोड की एक ताजा स्थापना के बाद मुझे इस समस्या का सामना करना पड़ा । यहाँ कुछ बेहतरीन जवाब हैं, लेकिन मुझे अभी तक npmjs.com का लिंक नहीं मिला है।

विकल्प 1: npm की डिफ़ॉल्ट निर्देशिका की अनुमति बदलें

  1. Npm की निर्देशिका का मार्ग खोजें:

    npm config get prefix

कई प्रणालियों के लिए, यह / usr / स्थानीय होगा

चेतावनी : यदि प्रदर्शित पथ सिर्फ / usr है , तो विकल्प 2 पर जाएँ

  1. Npm की निर्देशिकाओं के स्वामी को वर्तमान उपयोगकर्ता के नाम (आपका उपयोगकर्ता नाम!) में बदलें:

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

    यह npm और कुछ अन्य टूल ( lib / node_modules , bin , और share ) द्वारा उपयोग किए जाने वाले उप-फ़ोल्डरों की अनुमतियों को बदल देता है ।

विकल्प 2: npm की डिफ़ॉल्ट निर्देशिका को दूसरी निर्देशिका में बदलें

ऐसे समय होते हैं जब आप डिफ़ॉल्ट निर्देशिका के स्वामित्व को बदलना नहीं चाहते हैं जो npm का उपयोग करता है (यानी / usr ) क्योंकि इससे कुछ समस्याएं हो सकती हैं, उदाहरण के लिए यदि आप सिस्टम को अन्य उपयोगकर्ताओं के साथ साझा कर रहे हैं।

इसके बजाय, आप पूरी तरह से अलग निर्देशिका का उपयोग करने के लिए npm को कॉन्फ़िगर कर सकते हैं। हमारे मामले में, यह हमारे होम फ़ोल्डर में एक छिपी हुई निर्देशिका होगी।

  1. वैश्विक प्रतिष्ठानों के लिए एक निर्देशिका बनाएं:

    mkdir ~/.npm-global
  2. नई निर्देशिका पथ का उपयोग करने के लिए npm कॉन्फ़िगर करें:

    npm config set prefix '~/.npm-global'
  3. एक ~ / .profile फ़ाइल खोलें या बनाएं और इस पंक्ति को जोड़ें:

    export PATH=~/.npm-global/bin:$PATH
  4. कमांड लाइन पर वापस, अपने सिस्टम चर को अपडेट करें:

    source ~/.profile

1
धन्यवाद, यह एक मेरे लिए काम किया क्योंकि चाउड सॉल्यूशन नहीं था। तुमने मुझे बचाया।
13

क्या मुझे केवल विकल्प 2 पर स्विच करना चाहिए अगर मुझे मिल गया / usr?
अल्बर्ट लॉर

मुझे इस उत्तर के विकल्प 2 से प्यार है। (1) इसमें सूडो के उपयोग की सुरक्षा कमजोरियां नहीं हैं, (2) यह अन्य उपयोगकर्ताओं के लिए वास्तुकला को संरक्षित करता है, (3) यह प्रलेखन का संदर्भ देता है, और (4) इसमें आवश्यक कमांड लाइन है। प्रविष्टियाँ शामिल हैं। जोड़ने के लिए धन्यवाद!
टॉम रोज़

तो क्या होता है जब आप किसी चीज़ को स्थापित करते हैं जो कि सहमी हुई होती है /usr/bin/? अब केवल आपका उपयोगकर्ता ही इसे एक्सेस कर सकता है। आप किसी और के रूप में लॉग इन करते हैं, फिर भी कोई पहुंच नहीं है, क्योंकि फाइलें वास्तव में किसी अन्य उपयोगकर्ता के घर निर्देशिका में हैं!
Frans

अच्छा लगा, इसने मेरे लिए काम किया। आदेशों के अतिरिक्त स्पष्टीकरण के लिए धन्यवाद।
FrankByte.com 22

12

जैसे कि हमें यहाँ और अधिक उत्तरों की आवश्यकता है, लेकिन फिर भी ..

सिंध्रे सोरस के पास ओएस एक्स और लिनक्स पर सुडो के बिना विश्व स्तर पर एक एनपीएम पैकेज स्थापित करने की मार्गदर्शिका है, जिसमें यह बताया गया है कि कैसे अनुमतियों के साथ खिलवाड़ किए बिना सफाई से स्थापित किया जाए:

यहां दिए गए उपयोगकर्ता के लिए विश्व स्तर पर पैकेज स्थापित करने का एक तरीका है।

  1. अपने वैश्विक पैकेजों के लिए एक निर्देशिका बनाएँ

    mkdir "${HOME}/.npm-packages"
  2. अपने .bashrc / .zshrc में भविष्य के उपयोग के लिए इस निर्देशिका का संदर्भ दें:

    NPM_PACKAGES="${HOME}/.npm-packages"
  3. Npm को इंगित करें कि आपके वैश्विक रूप से स्थापित पैकेज को कहाँ संग्रहीत किया जाए। अपनी $HOME/.npmrcफ़ाइल में जोड़ें:

    prefix=${HOME}/.npm-packages
  4. सुनिश्चित करें कि नोड उन्हें मिल जाएगा। अपने .bashrc / .zshrc पर निम्न जोड़ें:

    NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
  5. सुनिश्चित करें कि आप स्थापित बायनेरिज़ और मैन पेज पाएंगे। निम्नलिखित को अपने .bashrc/ .zshrc: में जोड़ें

    PATH="$NPM_PACKAGES/bin:$PATH"
    # Unset manpath so we can inherit from /etc/manpath via the `manpath`
    # command
    unset MANPATH # delete if you already modified MANPATH elsewhere in your config
    MANPATH="$NPM_PACKAGES/share/man:$(manpath)"

की जाँच करें NPM-g_nosudo स्वतः ऊपर के चरणों को करने के लिए

नवीनतम अपडेट के लिए इस गाइड के स्रोत को चेकआउट करें।


2
tx edit @AndyHayden :) के लिए मेरी पसंदीदा विधि ऊपर टिप्पणियों में सुझाई गई है: NVM का उपयोग करें! stackoverflow.com/a/24404451/1480391
ptim

एकमात्र समाधान जो मेरे लिए काम करता है जिसमें अनुमतियों के बारे में मैकिंग शामिल नहीं है। मुझे एनपीएम और उसकी मूर्खतापूर्ण अनुमति मूर्खता से नफरत है। समाधान के लिए धन्यवाद!
रयाननार्ड

8

टी एल; डॉ

हमेशा उपयोग sudo -iया sudo -Hजब चल npm installवैश्विक पैकेज इंस्टॉल करने।

-

जब आप इसका उपयोग करते हैं तो npmयह आपके उपयोगकर्ता होम डायरेक्टरी में संकुल डाउनलोड करता है। जब आप sudo के रूप में चलाते हैं, npmउसी डायरेक्टरी में फाइल इंस्टॉल करते हैं, लेकिन अब वे रूट के स्वामित्व में हैं।

तो यह वही होता है जो कभी भी इस्तेमाल किए गए हर एक व्यक्ति के लिए होता है npm:

  • समस्या का उपयोग किए बिना कुछ स्थानीय पैकेज स्थापित करें npm install foo
  • sudo install -g foo-cliसमस्या के बिना वैश्विक पैकेज स्थापित करें
  • के साथ स्थानीय पैकेज स्थापित करने का प्रयास npm install bar
  • npmअब आप chmodएक निर्देशिका में फिर से जाना है कि डिजाइनरों पर निराश हो

जब आप sudo के साथ -iया -Hविकल्प का उपयोग करते हैं , तो आपकी होम निर्देशिका होम डायरेक्टरी होगी root। कोई भी वैश्विक इंस्टाल्‍ड /root/.npm, rootप्रस्‍तावित फ़ाइलों के बजाय संकुल को कैश करेगा /home/me/.npm

बस हमेशा उपयोग sudo -iया sudo -Hजब चल npm installवैश्विक संकुल और अपने को स्थापित करने के npmअनुमतियाँ समस्याओं पिघल जाएगा।

अच्छे के लिए।

http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html

- qv फिक्सिंग एक पहले से ही गड़बड़ के लिए स्वीकार किए जाते हैं जवाब npm


सबसे अच्छा और सरल समाधान
मंजीत सिंह

6

मुझे एनपीएम मॉड्यूल में सुडो के बिना वैश्विक रूप से स्थापित नहीं होने की समस्या थी, मुद्दा यह था कि जब मैंने नोड स्थापित किया था तो मैंने इसे क्रिसो / लीपा पीपीए रेपो के माध्यम से सूडो के साथ किया था

मेरा समाधान नोड की स्थापना रद्द करना था और फिर इसे इस तरह स्थापित करना था:

नोडज ..org # से मेरे मामले नोड- v0.10.20.tar.gz से नवीनतम स्थिर नोड स्रोत डाउनलोड करें

tar -zxf नोड-v0.10.20.tar.gz #uncompress के स्रोत

सीडी नोड- v0.10.20 #enter असम्पीडित फ़ोल्डर

sudo chown $ USER -R / usr / लोकल

./configure --prefix = / usr / लोकल && मेक && मेक इनस्टॉल

पीडी: यदि आप / usr / स्थानीय फ़ोल्डर के स्वामित्व को बदलना नहीं चाहते हैं, तो आप इसे कहीं और स्थापित कर सकते हैं जो आपके पास पहले से है। इस दृष्टिकोण की समस्या यह है कि आपको इंस्टालेशन फोल्डर को बैश कमांड लाइन के साथ बांधना होगा ताकि हम बाद में नोड कमांड का उपयोग कर सकें

mkdir ~ / ऑप्ट

./configure --prefix = ~ / opt && मेक && मेक इनस्टॉल

प्रतिध्वनि 'PATH = ~ / opt / bin: $ {PATH}' >> ~ / .bashrcorororor / / / .profile या ~ / .bash_profile या ~ / .zshenv पर वर्तमान मूलक प्रणाली के आधार पर निर्यात करें।

उन तरीकों में से किसी के साथ, आप sudo का उपयोग किए बिना निम्नलिखित कार्य करने में सक्षम होंगे

npm स्थापित -g मॉड्यूल_to_install


1
मैंने इस पद्धति का उपयोग करके समाप्त किया। sudo chown $USER /use/localबनाने से पहले उपयोग किया । अभी तक अच्छा लग रहा है, परमाणु बनाने की कोशिश करने का समय! धन्यवाद!
प्रशान्त

6

जब आप npm स्थापित -g somepackage चलाते हैं, तो आपको EACCES की त्रुटि हो सकती है, जिससे आप कमांड को रूट / एडमिनिस्ट्रेटर के रूप में फिर से चला सकते हैं। यह एक अनुमति मुद्दा है।

यह ठीक करने के लिए आसान खोलने पर, आपकी टर्मिनल (अनुप्रयोग> उपयोगिताएँ> टर्मिनल)

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

** मैं आपको सोंडो (sudo npm -g install कुछ) के साथ पैकेज मैनेजमेंट का उपयोग न करने की जोरदार सलाह देता हूं, क्योंकि आप इन मुद्दों को प्राप्त कर सकते हैं **

संदर्भ: http://foohack.com/2010/08/intro-to-npm/


वाह! यह एक मेरे लिए किया था! : अन्य अन्य लोगों के ऊपर करने के बाद sudo chown -R `whoami` ~/.npm, sudo chown -R `whoami` /usr/local/libऔर
रेगिस Zaleman

8
यह कई अन्य एप्लिकेशन के साथ अनुमतियों की समस्या पैदा कर सकता है, इसलिए मेरा सुझाव है कि ऐसा नहीं करना चाहिए । क्यों एक दूसरे के लिए कीड़े का व्यापार कर सकते हैं?
ब्रैड पार्क्स

1
या कम से कम इसे / usr / स्थानीय / lib / node_modules को परिष्कृत करें।
केन

यह, यह और यह अधिक। एक दीवार के खिलाफ मेरे सिर को पीटने के बाद, यह चाल चली। +1
दशर्द

यह मेरा मुद्दा था। एक नए मैकबुक पर (ओएस x 10.10.3), पर अनुमति / usr / स्थानीय / lib / node_modules थे: $ ll / usr / स्थानीय / lib / node_modules कुल 0 drwxr-xr-x + 24561 पहिया 102B मार्च 31 18:19 । drwxrwxr-x 4 24561 admin 136B Mar 31 18:19 .. drwxr-xr-x 26 65534 स्टाफ 884B अप्रैल 13 10:53
npm

5

मैक के लिए (क्रिस्टोफर विल के जवाब से अपनाया गया)

मैक ओएस एक्स 10.9.4

  1. सिस्टम वरीयता> उपयोगकर्ता और समूह> (अनलॉक)> प्रेस +:

    नया खाता> "समूह"
    खाता नाम: नोडग्रेप

    समूह बनाने के बाद, उपयोगकर्ता को इस समूह में शामिल करने के लिए टिक करें

  2. sudo chgrp -R नोडग्रैप / usr / स्थानीय / lib / नोड_modules /
    sudo chgrp नोडग्रेप / usr / bin / नोड
    sudo chgrp नोडग्रेप / usr / bin / npm सुडोकू
    chown $ (whoami): नोडग्रेप ~ / .npm


1
मुझे कुछ रास्तों को / usr / लोकल / बिन में बदलना पड़ा लेकिन इसके अलावा इस समाधान ने मेरे OX X 10.9 मशीन पर बहुत काम किया - धन्यवाद!

सिस्टम निर्देशिकाओं के स्वामित्व को बदलने के लिए बुरा अभ्यास।
अमीर रेमर

मुझे लगता है कि यह इस बात पर निर्भर करता है कि आप क्या हासिल करना चाहते हैं। यदि फ़ोल्डर मूल रूप से केवल sudoer द्वारा पहुँचा जा सकता है तो इसे केवल इस तरह बदला जा सकता है। हम npm से संबंधित फ़ोल्डर में परिवर्तन को सीमित करते हैं। क्या sudoउन फ़ोल्डर समूह स्वामित्व को रखना या बदलना अधिक सुरक्षित होगा ताकि इसे सामान्य उपयोगकर्ता द्वारा संशोधित किया जा सके? यदि सामान्य उपयोगकर्ता को इस फ़ोल्डर पर कोई कार्रवाई करने के लिए नहीं माना जाता है, तो निश्चित रूप से फ़ोल्डर के समूह के स्वामित्व को नहीं बदलना चाहिए।
केन

उपयुक्त बात यह है कि सुडो के साथ वैश्विक पैकेज स्थापित करें, लेकिन इसे -Hध्वज के साथ करें । विशेष रूप से, sudo -H npm install -g <pkg>। यह सिस्टम और उपयोगकर्ता फ़ोल्डर के लिए अनुमतियों का उचित परिसीमन सुनिश्चित करता है। आप जो नहीं करना चाहते हैं वह उपयोग करना है sudo npm install -g, क्योंकि यह रूट-स्वामित्व वाली फ़ाइलों को आपकी उपयोगकर्ता निर्देशिका में स्थापित करता है। यह बहुत अच्छा होगा यदि npm इसे सही तरीके से करने के लिए पर्याप्त स्मार्ट था, लेकिन ऐसा नहीं है, इसलिए आपको -Hविश्व स्तर पर ठीक से स्थापित करने के लिए sudo ध्वज का उपयोग करना होगा ।
अमीर रीवा

4

मेरे मामले में, यह ~ / tmp.So की अनुमति के कारण है:

sudo chown -R $USER ~/tmp

और यह ठीक है!


4

मेरे लिए, केवल निष्पादित करें

sudo chown -R $(whoami) ~/.npm

काम नहीं करता है। फिर, मैं भी निष्पादित करता हूं

sudo chown -R $(whoami) /usr/lib/node_modules/
sudo chown -R $(whoami) /usr/bin/node
sudo chown -R $(whoami) /usr/bin/npm

और सब ठीक काम करता है!


आप बहुत भयानक हैं सर :)
user805981

फ़ाइलें /usr/libसिस्टम फ़ाइल हैं और आपके व्यक्तिगत उपयोगकर्ता खाते के स्वामित्व में नहीं होनी चाहिए।
अमीर रीमेक

4

मुद्दा : आपके पास (उपयोगकर्ता) निर्देशिका के लिए अनुमतियों का सही सेट नहीं है।

तत्काल तरीका यह है कि आप sudo का उपयोग करके npm इंस्टॉल को चलाएं, लेकिन यह आपको वही त्रुटि, या अनुचित इंस्टॉलेशन दे सकता है।

और निर्देशिका स्वामित्व बदलना एक अच्छा विकल्प नहीं है, एक अस्थायी पैच।


समाधान / सुझाव : बदलें npm की डिफ़ॉल्ट निर्देशिका (आधिकारिक डॉक्स से )

आगे बढ़ने से पहले अपने कंप्यूटर का बैकअप लें।

(वैकल्पिक) यदि आपके पास एक गलत इंस्टॉलेशन है, तो पहले इसे अनइंस्टॉल करें:

npm uninstall <package-name>  # use sudo if you used it while installation
npm cache verify  # or, npm cache clean for npm version below 5.x.x 
  1. वैश्विक प्रतिष्ठानों के लिए एक निर्देशिका बनाएं:

    mkdir ~/.npm-global

  2. नई निर्देशिका पथ का उपयोग करने के लिए npm कॉन्फ़िगर करें:

    npm config set prefix '~/.npm-global'

  3. खोलें या एक बनाने ~/.profileया ~/.bash_profileफ़ाइल और इस पंक्ति जोड़ें:

    export PATH=~/.npm-global/bin:$PATH

  4. कमांड लाइन पर वापस, अपने सिस्टम चर को अपडेट करें, या टर्मिनल को पुनरारंभ करें:

    source ~/.profile

  5. (वैकल्पिक) परीक्षण: सुडो का उपयोग किए बिना विश्व स्तर पर एक पैकेज डाउनलोड करें।

    npm install -g jshint


3

मामले में sudo chown -R $(whoami) ~/.npmआप के लिए काम नहीं किया, या आप एक गैर टर्मिनल आदेश समाधान की जरूरत है।

मुद्दा यह है कि आपके उपयोगकर्ता खाते में node_modules फ़ोल्डर की अनुमति नहीं है, इसलिए आप निम्न कार्य कर सकते हैं

  1. ओपन खोजक और प्रेस cmd+ shift+ gइस यूआरएल के साथ फ़ोल्डर के लिए जाना जाएगा खुला

  2. निम्नलिखित पथ लिखो /usr/local/lib/node_modulesऔर जाओ दबाओ

  3. node_modulesफ़ोल्डर पर राइट क्लिक करें और चुनेंGet Info

  4. sharing & permissionsअनुभाग पर स्क्रॉल करें

  5. परिवर्तन करने में सक्षम होने के लिए अनलॉक करें।

  6. +अपना उपयोगकर्ता खाता दबाएं और जोड़ें

  7. सुनिश्चित करें कि आप Read & Writeविशेषाधिकार ड्रॉप डाउन में चुनते हैं

अब आपको बिना पैकेज स्थापित करने में सक्षम होना चाहिए sudoऔर अनुमति के मुद्दों को हल करना चाहिए


3

समस्या: आपके पास उन निर्देशिकाओं को लिखने की अनुमति नहीं है जो npm वैश्विक संकुल और आदेशों को संग्रहीत करने के लिए उपयोग करती हैं।

समाधान: npm के लिए अनुमति दें।

एक टर्मिनल खोलें:

कमांड + स्पेसबार फिर 'टर्मिनल' टाइप करें

यह आदेश दर्ज करें:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
  • नोट: इसके लिए आपके पासवर्ड की आवश्यकता होगी।

यह समाधान अन्य निर्देशिकाओं को अच्छा और सुरक्षित रखते हुए, केवल आवश्यक निर्देशिकाओं की अनुमति देता है।


डाउनवोटिंग क्योंकि सिस्टम फोल्डर का उपयोगकर्ता स्वामित्व सेट करना एक एंटी-पैटर्न है और यह इसके लिए जिम्मेदार नहीं है। विशेष स्थिति npm config get prefixमें जो होम फोल्डर में कुछ देता है, यह समाधान अनुमतियों को ठीक कर देगा, लेकिन साझा वातावरण के लिए सुरक्षित रूप से वैश्विक पैकेजों को स्थापित करने की अंतर्निहित समस्या को हल नहीं करता है।
अमीर रईस

यह ऑपरेटिंग सिस्टम के एक बड़े हिस्से की अनुमतियों को फिर से लिखेगा। उदाहरण के लिए उबंटू में इसे चलाने से "सुडो" कमांड अपने आप अनुपयोगी हो जाएगा।
सहंद सीफी

2

एनपीएम को ठीक से कॉन्फ़िगर करने के लिए एक और बढ़िया समाधान, निम्न कमांड चलाएं:

npm config set prefix '~/.npm_packages'
PATH=$PATH:$HOME/.npm_packages/bin; export PATH

2

आप यह कोशिश कर सकते हैं, ubuntu और मैक पर काम करता है

sudo chown -R $(whoami) /usr/local/lib/node_modules

1
मैंने इसे चलाया और मैक पर मेरे लिए 100% काम किया: sudo chown -R $ (whoami) / usr / local / lib / node_modules
leeroya

1

मुझे क्या लगता है कि सबसे अच्छा विकल्प एनपीएम दस्तावेज़ीकरण में सुझाया गया एक है , जो कि पहले यह जांचना है कि वैश्विक नोड_मॉड्यूल डिफ़ॉल्ट रूप से चल रहे हैं या नहीं npm config get prefix। अगर आपको मिलता है, जैसे मैं ट्रस्टी पर करता हूं,/usr , तो आप इसे एक फ़ोल्डर में बदलना चाह सकते हैं, जिस तरह से आप चीजों को गड़बड़ाने के बिना सुरक्षित रूप से खुद कर सकते हैं।

ऐसा करने के लिए, अपने सिस्टम में एक नया फ़ोल्डर चुनें या बनाएं। आप इसे अपने घर निर्देशिका में या मेरे जैसे, /usr/localनिरंतरता के तहत, क्योंकि मैं भी एक मैक उपयोगकर्ता हूँ (मैं मशीन के सामने होने वाली मशीन के आधार पर अलग-अलग स्थानों पर देखने की आवश्यकता नहीं है पसंद कर सकता हूं)। ऐसा करने का एक और अच्छा कारण यह है कि /usr/localफ़ोल्डर संभवतः आपके PATH में पहले से ही है (जब तक कि आप अपने PATH के साथ गड़बड़ करना पसंद नहीं करते हैं) लेकिन संभावना है कि आपका नया बनाया गया फ़ोल्डर नहीं है और आपको इसे जोड़ने की आवश्यकता होगी अपने आप को अपने .bash-profile या .bashrc फ़ाइल पर पथ ।

लंबी कहानी छोटी, मैंने npm config set prefix '/usr/local'फ़ोल्डर के साथ वैश्विक मॉड्यूल के डिफ़ॉल्ट स्थान को बदल दिया , फ़ोल्डर बनाया /usr/local/lib/node_modules(इसका उपयोग एनपीएम द्वारा किया जाएगा) और कमांड के साथ एनपीएम द्वारा उपयोग किए जाने वाले फ़ोल्डरों के लिए अनुमतियों को बदल दिया:

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

अब आप किसी भी मॉड्यूल को सुरक्षित रूप से स्थापित कर सकते हैं। उम्मीद है की यह मदद करेगा!


1

इस तरह मैंने विंडोज 8.1 पर समस्या का हल किया:

  • अपने नोडज पर स्थापित करें (आमतौर पर C: \ Program Files \ नोडज)
  • राइट-क्लिक करें node_modules फ़ोल्डर और गुणों पर जाएं
  • सुरक्षा टैब पर क्लिक करें और उन्नत करें
  • शीर्ष पर आपको "स्वामी: सिस्टम" दिखाई देगा, परिवर्तन पर क्लिक करें
  • उस उपयोगकर्ता को दर्ज करें जिसे आप अनुमतियाँ चाहते हैं और ठीक क्लिक करें
  • उन्नत सेटिंग्स के नीचे स्थित बॉक्स को चेक करें "इस ऑब्जेक्ट से अंतर्निहित अनुमति प्रविष्टियों के साथ सभी चाइल्ड ऑब्जेक्ट अनुमति प्रविष्टियों को बदलें" और ठीक क्लिक करें
  • जो भी एनपीएम इंस्टॉल / अपडेट करना है उसे करें

1

सबसे अच्छा समाधान होगा इस जो NPM प्रलेखन द्वारा प्रदान की जाती है।


उबंटू सुझाए गए समाधान के लिए विकल्प # 2 है

संक्षिप्त चरण:
वैश्विक प्रतिष्ठानों के लिए एक निर्देशिका बनाएं:
mkdir ~/.npm-global

नई निर्देशिका पथ का उपयोग करने के लिए npm कॉन्फ़िगर करें: यदि उपसर्ग अपडेट किया गया था या नहीं, तो यह सत्यापित करने में आपकी मदद कर सकता है। इसका परिणाम होगा <Your Home Directory> /। Npm-global
npm config set prefix '~/.npm-global'
npm config get prefix

एक ~ / .profile फ़ाइल खोलें या बनाएं और इस पंक्ति को जोड़ें:
export PATH=~/.npm-global/bin:$PATH

कमांड लाइन पर वापस, अपने सिस्टम चर को अपडेट करें:
source ~/.profile

2-4 चरणों के बजाय आप संबंधित ईएनवी वैरिएबल का उपयोग भी कर सकते हैं (जैसे यदि आप संशोधित नहीं करना चाहते ~ / .profile):

NPM_CONFIG_PREFIX=~/.npm-global


मैक सुझाए गए समाधान के लिए विकल्प # 3 है

Mac OS पर आप Homebrew पैकेज मैनेजर का उपयोग करके इस समस्या से पूरी तरह से बच सकते हैं

brew install node


यह NPM_CONFIG_PREFIX काम नहीं करेगा। यह npm-descriptiton में एक त्रुटि है। ऊपर मेरी पोस्ट देखें, इसे सही तरीके से कैसे करें: stackoverflow.com/a/41395398/1256697
suther

1

मैं मालिक को रूट से मेरे उपयोगकर्ता-नाम में बदलकर हल करता हूं

sudo chown -R me:me /home/me/.config/configstore/

मुझे अपने उपयोगकर्ता-नाम और समूह के साथ बदलें।


1

मैं मालिक को बदलने के बजाय इसे प्राप्त करने के लिए ubuntu समूहों का उपयोग करना पसंद करता हूं। यह काफी सरल है।

  1. पहले apt-get का उपयोग करके नोडज और npm को स्थापित करें

    sudo apt-get update && sudo apt-get install nodejs npm

  2. यह पता लगाएं कि कौन लॉग-इन उपयोगकर्ता नाम है, इसे टर्मिनल में देखने के लिए निम्नलिखित कमांड चलाएँ

    whoami

  3. आप उन समूहों की सूची देख सकते हैं जिन्हें आप एक बहुत ही साधारण कमांड का उपयोग करके सौंपा गया है, आम तौर पर पहला समूह आपका उपयोगकर्ता नाम ही है

    groups

  4. उपयोगकर्ता में लॉग इन करने की अनुमति देने के लिए निम्नलिखित का पालन करें

    sudo chmod 777 -R /usr/local && sudo chgrp $(whoami) -R /usr/local

  5. Npm और नोडज को अपडेट करें

    npm install -g npm

आप परेशान हैं, आपका उपयोगकर्ता बिना sudo के npm कमांड चला सकता है

आप इस लिंक https://askubuntu.com/a/1115373/687804 पर भी देख सकते हैं


0

मैक ओएस एक्स पर, होमब्रे के साथ स्थापित करते समय brew install npm, स्थापना पथ /usr/local/share/npm/दोनों के साथ है bin/औरlib/node_modules/ सबफ़ोल्डर्स के साथ है।

उपयोगकर्ता को वर्तमान में लॉग इन करने के लिए स्वामी को बदलने के लिए इस आदेश को चलाने से इसे सभी को ठीक करना चाहिए, और आपको बिना वैश्विक एनपीएम पैकेज स्थापित करने की अनुमति दी जानी चाहिए sudo

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


1
आजकल इस प्रश्न का मेरे अन्य उत्तर की सिफारिश करेगा जो npm configइसके बजाय उपयोग करता है ।
जोएल पुरा

0

दरअसल, मुझे भी यही समस्या हो रही थी। मैं उबंटू चला रहा था। खदान की समस्या इसलिए पैदा हुई क्योंकि मैंने उबंटू की अपनी सार्वजनिक कुंजी खो दी। यहां तक ​​कि मेरे सिस्टम को अपडेट करने से भी नहीं हो रहा था। यह GPG त्रुटि दे रहा था। उस स्थिति में, आप इस आदेश का उपयोग करके अपनी कुंजी पुनः प्राप्त कर सकते हैं:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <key in GPG error>

उसके बाद npm ठीक काम करता है!


0

जॉन पापा इस मुद्दे के पीछे के इतिहास और तर्क को इंगित करते हैं और एक ठोस समाधान देते हैं :

जॉन पापा के कदम हैं:

  1. Npm के बिना नोड स्थापित करने के लिए काढ़ा का उपयोग करें
  2. अपने .bash_profile / .bashrc को npm और नोड को बताने के लिए अद्यतन करें कि कहाँ स्थापित करें और पैकेज ढूंढें
  3. अपने आप को अपडेट करने के लिए नोड और एनपीएम को अपडेट करने के लिए काढ़ा का उपयोग करें

आशा है कि यह जिज्ञासु मदद करता है!


0

यह वह समाधान है जिसका मैंने उपयोग किया और काम किया। मैंने कोशिश की कि whoamiकभी काम न किया जाए।

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

फिर

sudo chown -R $USER /usr/local/bin/npm

फिर

sudo chown -R $USER /usr/local/bin/node


0

@ यवेस एम। का जवाब मेरे समाधान के समान था। यहाँ उन कमांड्स का इस्तेमाल किया गया है, जो उससे अलग थीं।

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

फिर नवीनतम संस्करण के लिए क्वेरी:

nvm ls-remote

फिर नवीनतम संस्करण स्थापित करें:

nvm install YOUR_VERSION_HERE

उदाहरण

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