npm sudo නොමැතිව දෝෂය විසි කරයි


1300

මම nodejs.org හි ඇති පැකේජය හරහා නෝඩ් සහ එන්පීඑම් ස්ථාපනය කර ඇති අතර මම එන්පීඑම් සමඟ යමක් සෙවීමට හෝ ස්ථාපනය කිරීමට උත්සාහ කරන සෑම විටම එය පහත දැක්වෙන දෝෂය විසි කරයි. මට හැඟීමක් තියෙනවා මේක අවසර ප්‍රශ්නයක් කියලා? මම දැනටමත් පරිපාලක වෙමි.

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 (අවසරයන් සමඟ අනවසරයෙන් ඇතුළුවීම වෙනුවට)
එම්.

2
anjanaspage ඔබට NPM (Node Package Manager) හරහා node හෝ NVM (Node Version Manager) ස්ථාපනය කළ නොහැක , එය තේරුමක් නැති දෙයකි . එන්පීඑම් නෝඩ් තුළ පැමිණේ (එය එකවර ස්ථාපනය කර ඇත). විකිපීඩියා පිටුව බලන්න: en.wikipedia.org/wiki/Npm_(software)
යෙව්ස් එම්.

5
අවසාන වශයෙන් වඩා හොඳ විසඳුමක් sudo chown: github.com/sindresorhus/guides/blob/master/…
දිමිත්‍රි

OSX යටතේ සහ 0official pkg intaller සමඟ node ස්ථාපනය කිරීම මෙම විසඳුම ක්‍රියාත්මක නොවීය. මම ඒ වෙනුවට මෙය භාවිතා කළෙමි: stackoverflow.com/a/34968008/675565
fmquaglia

2
එය ගැටළුව සහ නිවැරදි කිරීම පැහැදිලි කරයි: docs.npmjs.com/getting-started/fixing-npm-permissions
n00b

Answers:


2285

මෙය ඔබගේ නිවාස නාමාවලියෙහි අවසර නිකුතුවක් සේ පෙනේ. .Npm බහලුම ක්‍රියාත්මක කිරීමේ අයිතිය නැවත ලබා ගැනීම සඳහා :

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

102
මම සිතුවේ whoamiඑය ස්ථාන දරන්නෙකු බවයි, නමුත් එය වචනාර්ථයෙන් ටයිප් කර ඇති පරිදි ක්‍රියා කරයි, එබැවින් එය මට නොතේරෙන විචල්‍යයක් විය යුතුය.
SimplGy

127
whoami යනු සත්‍ය ෂෙල් විධානයකි en.wikipedia.org/wiki/Whoami . අවට ඇති බැක්ටික්ස් whoamiඑය නිවැරදිව ක්‍රියාත්මක කර චව්න් විධානයට ඇතුළත් කරන බව සහතික කරයි
නෝවා

13
ඔබට ඔබගේ පරිශීලක නාමයද අතින් නියම කළ හැකිය. ඔබේ පරිශීලක නාමය "simpleascouldbe" නම්, විධානය වනුයේsudo chown -R simpleascouldbe ~/.npm
නෝවා

13
npm අවශ්‍ය නොවේ, ඔබ සුඩෝ භාවිතා නොකළ යුතුය - පහත පිළිතුර බලන්න he හෙබර්එල්එස් විශේෂයෙන් ඔහුගේ 2 වන විකල්පය: ./configure --prefix = xxxxxx
ස්කොට් ස්ටෙන්ස්ලන්ඩ්

9
H ක්‍රිස්ටෝපර්විල්: මෙය පද්ධති නාමාවලියක හිමිකාරිත්වය වෙනස් නොකරයි. මෙය පරිශීලකයාගේ නිවාස නාමාවලියෙහි ඇති නාමාවලි වල හිමිකාරිත්වය වෙනස් කරයි, එය පරිශීලකයා සතු විය යුතුය.
user4815162342

626

Node එකක් මතම ඊට අදාල ස්ථාපනය කරන විට භාවිතා කිරීමට අවසර ඔබගේ ලියන වැනි දේවල් කරන්නේ විට අවශ්ය වනු ඇත npm බහලුම ( npm link, npm install -gආදිය).

ඔබ බොහෝ විට මූල අවසරයන් සහිත නෝඩ් ස්ථාපනය කර ඇති අතර ගෝලීය ඇසුරුම් ස්ථාපනය ඔබෙන් root වීමට ඉල්ලා සිටින්නේ එබැවිනි.


විසඳුම 1: එන්වීඑම්

අවසරයන් සමඟ අනවසරයෙන් නොයන්න, නිවැරදි ආකාරයෙන් නෝඩ් ස්ථාපනය කරන්න.

සංවර්ධන පරිගණකයේ, ඔබ root අවසර ඇති node එකක් මතම ඊට අදාල ස්ථාපනය සහ ක්රියාත්මක නොකළ යුතු අතර එසේ නොමැති නම් වැනි දේවල් npm link, npm install -gඑම අවසර අවශ්ය වනු ඇත.

NVM (Node Version Manager) මඟින් ඔබට root අවසරයකින් තොරව Node ස්ථාපනය කිරීමට ඉඩ ලබා දෙන අතර Node හි බොහෝ සංස්කරණ ඒවා සමඟ පහසුවෙන් සෙල්ලම් කිරීමට ඔබට ඉඩ සලසයි .. සංවර්ධනය සඳහා පරිපූර්ණයි.

  1. නෝඩ් අස්ථාපනය කරන්න (මූල අවසරය බොහෝ විට අවශ්‍ය වනු ඇත). මෙය ඔබට උදව් විය හැකිය.
  2. ඉන්පසු මෙම පිටුවේ පහත දැක්වෙන උපදෙස් NVM ස්ථාපනය කරන්න .
  3. NVM හරහා නෝඩ් ස්ථාපනය කරන්න: nvm install node

දැන් npm link, npm install -gඔබ මූල වීමට තවදුරටත් අවශ්‍ය නොවනු ඇත.

සංස්කරණය කරන්න: https://docs.npmjs.com/getting-started/fixing-npm-permissions ද බලන්න


විසඳුම 2: වෙබ්අයි සමඟ ස්ථාපනය කරන්න

webinodeනෝඩ් මුදා හැරීමේ API වෙතින් නිල පැකේජය ලබා ගනී. එයට පැකේජ කළමණාකරුවෙකු අවශ්‍ය නොවේ, අවශ්‍ය sudoහෝ rootප්‍රවේශ නොවේ, සහ පද්ධති අවසරයන් වෙනස් නොකරනු ඇත.

curl -s https://webinstall.dev/node | bash

නැතහොත්, වින්ඩෝස් 10 හි:

curl.exe -sA "MS" https://webinstall.dev/node | powershell

හරියට nvm, ඔබට පහසුවෙන් නෝඩ් අනුවාද මාරු කළ හැකිය:

webi node@v12

nvm(හෝ පහත 3 වන විසඳුම) මෙන් නොව , npmපැකේජ වෙනම වනු ඇත (ඔබ නෝඩ් අනුවාදයන් මාරු කරන විට නැවත ස්ථාපනය කිරීමට අවශ්‍ය වනු ඇත).

npmවින්‍යාසය වෙනස් නොකර , ඔබට ගෝලීයව ස්ථාපනය කළ හැකිය:

npm install -g prettier

මෙම විසඳුම අත්‍යවශ්‍යයෙන්ම ස්ථාපනය කරන වෙනත් විසඳුම්වල ස්වයංක්‍රීය අනුවාදයකි $HOME.


විසඳුම 3: දී ඇති පරිශීලකයෙකු සඳහා ගෝලීයව පැකේජ ස්ථාපනය කරන්න

අවසරයන් සමඟ අනවසරයෙන් නොයන්න, ගෝලීයව නිවැරදි ආකාරයෙන් npm පැකේජ ස්ථාපනය කරන්න.

ඔබ OSX එකක් හෝ ලිනක්ස් මත නම්, ඔබ හැකි ඔබගේ ගෝලීය පැකේජය සඳහා පරිශීලක කැප බහලුම නිර්මාණය හා සැකසුම npmහා nodeගෝලීය ස්ථාපිත පැකේජ සොයා ගන්නේ කෙසේ ද කියා දැනගන්න.

සූඩෝ නොමැතිව ගෝලීයව npm මොඩියුල ස්ථාපනය කිරීම සඳහා පියවරෙන් පියවර උපදෙස් සඳහා මෙම විශිෂ්ට ලිපිය බලන්න .

මෙයද බලන්න: npm අවසරයන් සවි කිරීම පිළිබඳ npm ලේඛනය .


32
මෙහි පළ කර ඇති සියලුම විසඳුම් අතරින් එන්වීඑම් විසඳුම මට හොඳම ප්‍රති results ල ලබා දී ඇත. අවසරයන් සමඟ සෙල්ලම් කරනවාට වඩා NVM භාවිතා කිරීම නිර්දේශ කරන්න.
වෙන්කෝඩ්

9
මෙම උපදෙස් ඉතා හොඳින් ක්‍රියාත්මක විය. කෙසේ වෙතත් ඔබට බොහෝ විට nodejs අස්ථාපනය කිරීමට පෙර ඔබ sudo සමඟ ස්ථාපනය කර ඇති මොඩියුල ඉවත් කිරීමට අවශ්‍ය වනු ඇත : npm ls -gp | awk -F/ '/node_modules/ && !/node_modules.*node_modules/ {print $NF}' | xargs npm -g rm- මට nodejs සහ මූල කවචයක නැවත ස්ථාපනය කර ඒවා අස්ථාපනය කිරීමට සිදු විය, එසේ නොමැතිනම් ඔබට දිගටම yo, grunt,
un නෝ ෆ්ලාවියෝ

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
seangates

3
නිෂ්පාදන යන්ත්‍රයක නෝඩ් ස්ථාපනය කිරීම සඳහා root භාවිතා කිරීම සුදුසු ඇයි?
un නෝ පෙරෙස්

398

ඔබට node_modulesනාමාවලියෙහි ලිඛිත අවසරය අවශ්‍ය වනු ඇත :

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

7
~/tmpමට නාමාවලිය මෙන්ම .
knownasilya

126
මෙය තවමත් ඉහළ මට්ටමක පවතින්නේ මන්දැයි මම නොදනිමි. පද්ධති නාමාවලි වල හිමිකාරිත්වය විශේෂිත පරිශීලකයෙකුට වෙනස් කිරීම ඉතා නරක පුරුද්දකි! වෙනත් විසඳුම් සඳහා කරුණාකර පහත පිළිතුර බලන්න (නෝඩ් භාවිතා කරන්නන් සඳහා වෙනම කණ්ඩායමක් සෑදීම වැනි).
ක්‍රිස්ටෝපර් විල්

1
මා සතුව නැහැ node_modulesදී /usr/local/lib/. wtf?
කොනර් ලීච්

28
ඔබ කුමක් කළත් - නිසැකවම / sur chmod -R whoami '/ usr / local / lib හෝ / usr / lib / මත ධාවනය නොකරන්න, ඔබ ඔබේ sudoers ගොනුව විනාශ කර ඔබ ඔබටම වෛර කරනු ඇත.
qodeninja

8
හැමෝම, කරුණාකර මෙය පහත් කරන්න ... Then I ran sudo chown -R $USER /* and everything was fine- නැත - ඔබ ඔබේ යන්ත්‍රය විනාශ කරනවා.
commonpike

80

"පද්ධති-ගෝලීය" ෆෝල්ඩර වල හිමිකරු වෙනස් කිරීම කඩුල්ලකි. නැවුම් ස්ථාපනයකදී, "පරිශීලක-ගෝලීය" වැඩසටහන් සඳහා දැනටමත් ලිවිය හැකි ස්ථානයක් භාවිතා කිරීමට මම එන්පීඑම් වින්‍යාස කරමි :

npm config set prefix ~/npm

ඉන්පසු එම ෆෝල්ඩරය ඔබේ මාර්ගයට එක් කිරීමට වග බලා ගන්න:

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

බලන්න @ErikAndreas ' පිළිතුර කිරීමට NPM මොඩියුල sudo තොරව ගෝලීය ස්ථාපනය නැහැ සහ තවදුරටත් පියවරෙන්-පියවර මගපෙන්වීමක් විසින් @sindresorhus ද කට්ටල $MANPATH.


මම තදින්ම එකඟ වෙමි, ඔබ උපසර්ගය සැකසුවේ $HOMEනම් සාමාන්‍යයෙන් ඔබේ .profileස්ක්‍රිප්ට් $PATHඊළඟ වතාවේ එය මූලාශ්‍රය ගැන සැලකිලිමත් වනු ඇත (උදා: ඊළඟ වතාවේ ඔබ පිවිසෙන විට).
ජෙස් ඔස්ටින්

Ess ජෙස් ඔස්ටින්: සමහර විට, නමුත් එය ඔබට තවත් අවුල් ජාලයක් ගෙන එනු ඇති $HOMEඅතර අනෙක් (අනාගත?) එන්පීඑම් ලිපිගොනු / උප ෆෝල්ඩර වලට බාධා ඇති කරයි. විවිධ පැකේජ කළමණාකරුවන්ගෙන් / භාෂාවන්ගෙන් / ගොඩනැගීමේ පද්ධති වලින් ද්විමය වෙන් වෙන්ව තබා ගැනීමට කැමැත්තක් දක්වන්න, $PATHඒ වෙනුවට පැහැදිලිව සකසන්න (පිවිසුම් කාල පිටපතක).
ජොයෙල් පුර

අහ්? අපි මේ කතා කරන්නේ ගෝලීයව ස්ථාපනය කර ඇති මොඩියුලයන් ~/lib/node_modules, ඒවායේ සම්බන්ධිත CLI සමඟ, තිබේ නම්, තුළ ~/bin. බොහෝ පරිශීලකයින් සඳහා, විශේෂයෙන් ඔවුන්ට මූල නොමැති නම්, දෙකම ~/binසහ ~/libදැනටමත් පවතී.
ජෙස් ඔස්ටින්

1
මෙය හොඳම පිළිතුර ලෙස පිළිගත යුතුය. පද්ධති-ගෝලීය ෆෝල්ඩර වෙනස් කිරීම භයානක විය හැකිය.
ව්ලැඩිමීර් මාටන්

1
හොඳම (සරල හා ආරක්ෂිත) පිළිතුර. ඔබට ස්තුතියි.
ජුවාන් ඉග්නේෂියෝ බැරිසිච්

58

Bootstrap 3 සඳහා මගේ CSS සම්පාදනය කිරීම සඳහා Recess ( https://github.com/twitter/recess ) ස්ථාපනය කරන විට මට මෙය හමු විය .

විවේකය ස්ථාපනය කිරීමේදී:

-npm install recess -g
  1. නෝවා පවසන පරිදි ඔබේ homeනාමාවලියෙහි අවසර අගුළු ඇරීමට ඔබට අවශ්‍යය :

    sudo chown -R `whoami` ~/.npm
  2. ෂිලෝ පවසන පරිදි ඔබට node_modulesඩිරෙක්ටරියට ලිඛිත අවසර ද අවශ්‍ය වේ , එබැවින් එය තවමත් ක්‍රියාත්මක නොවන්නේ නම්, උත්සාහ කරන්න:

    sudo chown -R `whoami` /usr/local/lib/node_modules
  3. ඔබ තවමත් දෝෂ දකින්නේ නම්, ඔබට අවසර නිවැරදි/usr/local කිරීමටද අවශ්‍ය විය හැකිය :

    sudo chown -R `whoami` /usr/local

සදහන් කර ඇති පරිදි බව කරුණාකර මතක තබා මෙම පශ්චාත් /usr/local/ ඔබ මැක් මත නම් ක්රමයක් හිස් තීරුවෙහි ඇත්තටම නොවන අතර, එම නිසා, මෙම පිළිතුර ඇත්තටම මැක් පරිශීලකයන් සඳහා සෑම අතින්ම "ආරක්ෂිත" වේ. කෙසේ වෙතත්, ඔබ ලිනක්ස් හි සිටී නම්, බහු-පරිශීලක හිතකාමී, පද්ධති ආරක්ෂිත (නමුත් වඩා සංකීර්ණ) විසඳුමක් සඳහා ක්‍රිස්ටෝපර් විල්ගේ පිළිතුර පහත බලන්න.


35
මෙය නරක අදහසකි. පද්ධති නාමාවලි විශේෂිත පරිශීලකයෙකු සතු වීමට ඔබට අවශ්‍ය නොවනු ඇත. බරපතල ආරක්ෂක ගැටළු වලට අමතරව මෙයද බහුකාර්ය අනුකූල නොවේ.
ක්‍රිස්ටෝපර් විල්

2
ඔව්, නමුත් එය සංවර්ධන පරිසරයක් සඳහා හොඳ විසඳුමක් +2, විශේෂයෙන් ඔබ දැනටමත් node.js ස්ථාපනය කර ඇත්නම් සහ දිගටම ඉදිරියට යා යුතුය!
elliotrock

ඔබේ නිවාස නාමාවලියෙන් පිටත ඔබට ඇත්ත වශයෙන්ම පැකේජ නොතිබිය යුතුය
බෙන්

1
එය ඔබගේ නිවසේ ෆෝල්ඩරයේ නොමැති නම්, එය පද්ධති නාමාවලියකි. එය OS X විසින් භාවිතා නොකිරීම නිසා එය පද්ධති නාමාවලියක් නොවේ.
පොහොසත් රිමර්

55

පරිස්සමෙන්!!! පරිස්සමෙන්!!! පරිස්සමෙන්!!!

ආරක්ෂක අවදානම නිසා chown හෝ ​​chmod විසඳුම නොවේ .

ඒ වෙනුවට මෙය කරන්න, කරන්න:

ඔබ අමතන්නේ නම්, එන්පීඑම් වෙත යොමු වන ස්ථානය පළමුව පරීක්ෂා කරන්න:

npm config get prefix

/ Usr ආපසු ලබා දෙන්නේ නම්, ඔබට පහත සඳහන් දෑ කළ හැකිය:

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

මෙය ඔබගේ නිවාස නාමාවලියෙහි npm- නාමාවලියක් නිර්මාණය npmකර එය වෙත යොමු කරන්න.

මෙම වෙනස්කම් ස්ථිරව ලබා ගැනීම සඳහා, ඔබ ඔබේ .bashrc වෙත අපනයන විධානය එක් කළ යුතුය.

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

මට / usr ලැබුනේ නම් පමණක් 2 වන විකල්පයට මාරු විය යුතුද?
ඇල්බට් ලෝර්

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

සමහර මොඩියුලයන් (මැසිවිලි, බෝවර්, යෝ යනාදිය) තවමත් root ලෙස ස්ථාපනය කළ යුතුය. මෙයට හේතුව ඔවුන් / user / bin / හි සමමුහුර්ත නිර්මාණය කිරීමයි.

සංස්කරණය කරන්න

අවුරුදු 3 කට පසු මම නිර්දේශ කරන්නේ නෝඩ් අනුවාද කළමනාකරු භාවිතා කිරීමට ය . එය ඔබට බොහෝ කාලයක් හා කරදරයක් ඉතිරි කරයි.


2
මූලාශ්‍ර මඟින් නෝඩ් ස්ථාපනය කර ඇත්නම්, බහුකාර්යය ගැටළුවක් වුවද, සියලු මොඩියුලයන් සූඩෝ භාවිතයෙන් තොරව පරිපූර්ණව ක්‍රියා කරයි. මෙයද ඉතා වැදගත් වන්නේ යූමන් මොඩියුලය සම්බන්ධයෙන් ගත් කල, මිනිසුන්ට සූඩෝ ක්‍රියාත්මක කිරීමට ඉඩ නොදෙන බැවින් යූමන් යෙදුම සුඩෝ කිරීම මගින් ජනක යන්ත්‍ර යාවත්කාලීන කළ නොහැක :(
හෙබර්එල්එස්

1
ලිනක්ස් හි, මම සාමාන්‍යයෙන් staffමගේ dev ෆෝල්ඩර සඳහා අවසර ලබා දීම සඳහා සාදන ලද කණ්ඩායම භාවිතා කරමි . එසේම, chmod g+ws node_modulesඔබේ කණ්ඩායමට කියවීමට / ලිවීමට අවසර ඇති බවට වග බලා ගැනීම සඳහා ධාවනය කිරීම හොඳ අදහසකි .
jackvsworld

ackjackvsworld මාණ්ඩලික කණ්ඩායම ගැන දැන සිටියේ නැත. මම හිතන්නේ මෙය වඩාත් සුමට විසඳුමක් වනු ඇත, මන්ද යමෙකුට නව මන group කල්පිත කණ්ඩායමක් නිර්මාණය කළ යුතු නැත .. එය අඩු පැහැදිළි වුවද. නමුත් මෙම ආදානයට ස්තූතියි.
ක්‍රිස්ටෝපර් විල්

පොදුවේ ගත් කල, /usr/libඔබේ පද්ධති පැකේජ කළමනාකරුගේ පාලනය යටතේ පවතින අතර ඔබ එහි කිසිදු වෙනසක් නොකළ යුතුය.
පොහොසත් රීමර්

24

මෙම නිල ප්රලේඛනය විසින් අදාල කරුණ නිවැරදි කිරීමට ආකාරය පිළිබඳ npm installසමග අවසර EACCESදෝෂයක් පිහිටා ඇත https://docs.npmjs.com/getting-started/fixing-npm-permissions .

.pkgOSX හි ස්ථාපකය භාවිතා කරමින් නව නෝඩ් ස්ථාපනය කිරීමෙන් පසුව මට මෙම ගැටළුව ඇතිවිය. මෙහි හොඳ පිළිතුරු කිහිපයක් ඇත, නමුත් මම තවමත් npmjs.com වෙත සබැඳියක් දැක නැත.

විකල්ප 1: npm හි පෙරනිමි නාමාවලියට අවසරය වෙනස් කරන්න

  1. Npm ඩිරෙක්ටරියට මාර්ගය සොයන්න:

    npm config get prefix

බොහෝ පද්ධති සඳහා, මෙය / usr / local වේ.

අවවාදයයි : දර්ශනය වන මාර්ගය / 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
ස්තූතියි, චවුන්ඩ් ද්‍රාවණය නොතිබූ නිසා මෙය මට වැඩ කළේය. ඔබ මාව බේරුවා.
fmquaglia

මට / usr ලැබුනේ නම් පමණක් 2 වන විකල්පයට මාරු විය යුතුද?
ඇල්බට් ලෝර්

මෙම පිළිතුරේ විකල්පයට මම ප්‍රිය කරමි. ඇතුළත් කිරීම් ඇතුළත්. එකතු කිරීමට ස්තූතියි!
ටොම් රෝස්

ඉතින් ඔබ සමමුහුර්ත යමක් ස්ථාපනය කළ විට කුමක් සිදුවේද /usr/bin/? දැන් එයට පිවිසිය හැක්කේ ඔබේ පරිශීලකයාට පමණි. ලිපිගොනු වෙනත් පරිශීලක නිවාස නාමාවලියක ඇති බැවින් ඔබ වෙනත් අයෙකු ලෙස ලොග් වී ඇත, තවමත් ප්‍රවේශයක් නොමැත!
ෆ්‍රාන්ස්

හොඳයි, මේ කෙනා මට වැඩ කළා. විධාන වලට අමතරව පැහැදිලි කිරීම සඳහා ස්තූතියි.
FrankByte.com

12

අපට මෙහි තවත් පිළිතුරු අවශ්‍ය නම්, නමුත් කෙසේ හෝ ..

සින්ඩ්‍රේ සෝරස්ට මාර්ගෝපදේශයක් ඇත OS X සහ Linux හි සුඩෝ නොමැතිව ගෝලීයව npm පැකේජ ස්ථාපනය කරන්න අවසරයකින් තොරව අවුල් නොකර පිරිසිදු ලෙස ස්ථාපනය කරන්නේ කෙසේද යන්න විස්තර කරයි:

දී ඇති පරිශීලකයෙකු සඳහා ගෝලීයව පැකේජ ස්ථාපනය කිරීමේ ක්‍රමයක් මෙන්න.

  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
txAndyHayden සංස්කරණය සඳහා tx :) ඉහත අදහස් දැක්වීමේදී මා කැමති ක්‍රමය යෝජනා කර ඇත: NVM භාවිතා කරන්න! stackoverflow.com/a/24404451/1480391
ptim

මට වැඩ කළ එකම විසඳුම වන්නේ අවසරයන් සමඟ සම්බන්ධ නොවීමයි. මම එන්පීඑම් සහ එහි මෝඩ අවසර මෝඩකමට වෛර කරමි. විසඳුමට ස්තූතියි!
රයන්නර්ඩ්

8

ටීඑල්; ඩී.ආර්

සෑම විටම භාවිතා කරන්න sudo -iහෝ ගෝලීය පැකේජ ස්ථාපනය කිරීමට sudo -Hධාවනය වන විට npm install.

-

ඔබ npmඑය භාවිතා කරන විට ඔබේ පරිශීලක නිවාස නාමාවලියට පැකේජ බාගත කරයි. ඔබ sudo ලෙස ධාවනය වන විට npm, එකම ඩිරෙක්ටරියට ගොනු ස්ථාපනය කරයි, නමුත් දැන් ඒවා root සතු වේ.

එබැවින් මෙතෙක් භාවිතා කර ඇති සෑම පුද්ගලයෙකුටම මෙය සිදු වේ npm:

  • භාවිතයෙන් තොරව දේශීය පැකේජ කිහිපයක් ස්ථාපනය කරන්න npm install foo
  • sudo install -g foo-cliනිකුතුවකින් තොරව ගෝලීය පැකේජය ස්ථාපනය කරන්න
  • සමඟ දේශීය පැකේජය ස්ථාපනය කිරීමට උත්සාහ කරන්න npm install bar
  • npmදැන් ඔබට chmodනැවත නාමාවලියකට යා යුතු බැවින් නිර්මාණකරුවන් ගැන කලකිරීමට පත් වන්න

ඔබ සුඩෝ සමඟ -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

එන්පීඑම් මොඩියුලවල මට සමාන ගැටළුවක් ඇති අතර එය සූඩෝ නොමැතිව ගෝලීයව ස්ථාපනය නොවනු ඇත , ගැටළුව වූයේ මම නෝඩ් ස්ථාපනය කරන විට එය ක්‍රිස් / ලී පීපා රෙපෝ හරහා සුඩෝ සමඟ කළ බවය .

මගේ විසඳුම වූයේ නෝඩ් අස්ථාපනය කර එය මේ ආකාරයෙන් ස්ථාපනය කිරීමයි:

නවතම ස්ථායී නෝඩ් ප්‍රභවයන් nodejs.org වෙතින් බාගන්න # මගේ නඩුවේ node-v0.10.20.tar.gz

tar -zxf node-v0.10.20.tar.gz #uncompress ප්‍රභවයන්

cd node-v0.10.20 #enter සම්පීඩිත ෆෝල්ඩරය

sudo chown $ USER -R / usr / local

./configure --prefix = / usr / local && make && install කරන්න

PD: ඔබට / usr / local ෆෝල්ඩරයේ හිමිකාරිත්වය වෙනස් කිරීමට අවශ්‍ය නැතිනම්, ඔබට දැනටමත් අයිති තැනක එය ස්ථාපනය කළ හැකිය. මෙම ප්‍රවේශයේ ඇති ගැටළුව නම් ඔබට ස්ථාපන ෆෝල්ඩරය bash විධාන රේඛාව සමඟ බැඳීමට සිදුවනු ඇති අතර එමඟින් අපට පසුව node විධානය භාවිතා කළ හැකිය

mkdir opt / opt

./configure --prefix = opt / opt && make && install කරන්න

echo 'export PATH = ~ / opt / bin: $ AT PATH}' >> ~ / .bashrc #or ~ / .ප්‍රොෆයිල් හෝ ~ / .bash_profile හෝ ~ / .zshenv වත්මන් මෙහෙයුම් පද්ධතිය අනුව

මෙම එක් ප්‍රවේශයකින්ම, ඔබට සූඩෝ භාවිතා නොකර පහත සඳහන් දෑ කළ හැකිය

npm ස්ථාපනය -g module_to_install


1
මම මෙම ක්‍රමය භාවිතා කිරීම අවසන් කළෙමි. sudo chown $USER /use/localගොඩනැගීමට පෙර භාවිතා කළා. මේ දක්වා හොඳ පෙනුමක්, පරමාණුවක් සෑදීමට උත්සාහ කිරීමට කාලයයි! ස්තූතියි!
prasanthv

6

ඔබ npm install -g somepackage ධාවනය කරන විට, ඔබට නැවත විධානය root / පරිපාලක ලෙස ක්‍රියාත්මක කරන ලෙස ඉල්ලා EACCES දෝෂයක් ඇතිවිය හැකිය. එය අවසර ප්‍රශ්නයක්.

ඒක අදාල කරුණ නිවැරදි කිරීමට පහසු , ඔබේ පර්යන්තය (අයදුම්පත්> උපයෝගිතා> පර්යන්තය) විවෘත

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

** ඔබට පසුව ගැටළු කිහිපයක් ලබා ගත හැකි නිසා sudo (sudo npm -g යමක් ස්ථාපනය කරන්න) සමඟ ඇසුරුම් කළමනාකරණය භාවිතා නොකරන ලෙස මම තරයේ නිර්දේශ කරමි **

යොමුව: http://foohack.com/2010/08/intro-to-npm/


Yay! මේ කෙනා මට ඒක කළා! ඉහත අනෙකුත් අය කරන්නේ පසු: sudo chown -R `whoami` ~/.npm, sudo chown -R `whoami` /usr/local/libසහ
Regis Zaleman

8
මෙය වෙනත් බොහෝ යෙදුම් සමඟ අවසර ගැටළු ඇති කළ හැකි බැවින් මෙය නොකරන්නැයි මම යෝජනා කරමි . කෙනෙකුට පණුවන් ටින් එකක් තවත් කෙනෙකුට වෙළඳාම් කරන්නේ ඇයි?
බ්‍රැඩ් පාර්ක්ස්

1
නැතහොත් අවම වශයෙන් එය / usr / local / lib / node_modules වෙත පිරිපහදු කරන්න.
කෙන්

මෙය, මෙය සහ තවත් මෙය. මගේ හිස බිත්තියකට ගැසූ පසු, මෙය උපක්‍රමයක් විය. +1
dashard

මෙය මගේ ප්‍රශ්නය විය. නව මැක්බුක් එකක (os x 10.10.3), / usr / local / lib / node_modules සඳහා වූ අවසරයන් වූයේ: $ ll / usr / local / lib / node_modules එකතුව 0 drwxr-xr-x 3 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
tkane2000

5

මැක් සඳහා (ක්‍රිස්ටෝපර් විල්ගේ පිළිතුරෙන් උපුටා ගන්නා ලදි)

මැක් ඕඑස් එක්ස් 10.9.4

  1. පද්ධති මනාපය> පරිශීලකයින් සහ කණ්ඩායම්> (අගුළු ඇරීම)> ඔබන්න +:

    නව ගිණුම> "කණ්ඩායම්"
    ගිණුමේ නම: nodegrp

    කණ්ඩායම නිර්මාණය කිරීමෙන් පසුව, මෙම කණ්ඩායමට ඇතුළත් කිරීමට පරිශීලකයා ටික් කරන්න

  2. sudo chgrp -R nodegrp / usr / local / lib / node_modules /
    sudo chgrp nodegrp / usr / bin / node
    sudo chgrp nodegrp / usr / bin / npm
    sudo chown -R $ (whoami): nodegrp ~ / .npm


1
මට / usr / local / bin වෙත මාර්ග කිහිපයක් වෙනස් කිරීමට සිදු විය, නමුත් ඒ හැරෙන්නට මෙම විසඳුම මගේ OX X 10.9 යන්ත්‍රය මත හොඳින් ක්‍රියාත්මක විය - ස්තූතියි!
ස්ප්ලිග්

පද්ධති නාමාවලි වල හිමිකාරිත්වය වෙනස් කිරීමට නරක පුරුදු.
පොහොසත් රිමර්

රිච්මර් මම හිතන්නේ එය ඔබ සපුරා ගැනීමට උත්සාහ කරන දේ මත රඳා පවතී. ෆෝල්ඩරයට මුලින් ප්‍රවේශ විය හැක්කේ සුඩෝරයට පමණක් නම් එය වෙනස් කළ හැක්කේ මේ ආකාරයෙන් පමණි. අපි වෙනස npm හා සම්බන්ධ ෆෝල්ඩරයට සීමා කරමු. sudoසාමාන්‍ය පරිශීලකයාට එය වෙනස් කළ හැකි වන පරිදි එම ෆෝල්ඩර කණ්ඩායම් හිමිකම දිගටම කරගෙන යාම හෝ වෙනස් කිරීම වඩා ආරක්ෂිතද ? සාමාන්‍ය පරිශීලකයා මෙම ෆෝල්ඩරයේ කිසිදු ක්‍රියාවක් සිදු නොකළ යුතු නම්, ඇත්ත වශයෙන්ම ෆෝල්ඩරයේ කණ්ඩායම් හිමිකම වෙනස් නොකළ යුතුය.
කෙන්

කළ යුතු සුදුසුම දෙය නම් සූඩෝ සමඟ ගෝලීය පැකේජ ස්ථාපනය කිරීමයි, නමුත් -Hධජය සමඟ එය කරන්න . විශේෂයෙන් , sudo -H npm install -g <pkg>. මෙය පද්ධති සහ පරිශීලක ෆෝල්ඩර සඳහා අවසරයන් නිසි ලෙස අර්ථ දැක්වීම සහතික කරයි. ඔබට කිරීමට අවශ්‍ය නැති දේ භාවිතා sudo npm install -gකිරීමකි, මන්ද මෙය ඔබේ පරිශීලක නාමාවලියට root සතු ගොනු ස්ථාපනය කරන බැවිනි. මෙය නිවැරදි ආකාරයට කිරීමට එන්පීඑම් බුද්ධිමත් නම් එය ඉතා හොඳ ය, නමුත් එය එසේ නොවේ, එබැවින් ඔබ -Hගෝලීයව නිසි ලෙස ස්ථාපනය කිරීම සඳහා සුඩෝ ධජය භාවිතා කළ යුතුය.
පොහොසත් රීමර්

5

ප්‍රශ්නය : ඔබට (පරිශීලකයාට) නාමාවලිය සඳහා නිවැරදි අවසර කට්ටලයක් නොමැත.

ක්ෂණික මාර්ගය වන්නේ සුඩෝ භාවිතයෙන් 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


4

මගේ නඩුවේදී, එය ~ / tmp හි අවසරය නිසා ය. එබැවින් මම:

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පද්ධති ගොනු වන අතර ඒවා ඔබගේ පුද්ගලික පරිශීලක ගිණුමට අයත් නොවිය යුතුය.
පොහොසත් රීමර්

3

නඩුවේ sudo chown -R $(whoami) ~/.npmඔබ වෙනුවෙන් වැඩ කටයුතු කළේ නැත, හෝ ඔබ නොවන පර්යන්තය විධානය විසඳුමක් අවශ්ය වේ.

ගැටළුව වන්නේ ඔබේ පරිශීලක ගිණුමට node_modules ෆෝල්ඩරයට ලිඛිත අවසරයක් නොමැති නිසා ඔබට පහත සඳහන් දෑ කළ හැකිය

  1. සෙවුම විවෘත කර cmd+ shift+ ඔබන්න gමෙය url සමඟ ෆෝල්ඩරයට යයි

  2. පහත දැක්වෙන මාර්ගය ලියන්න /usr/local/lib/node_modulesසහ යන්න ඔබන්න

  3. node_modulesෆෝල්ඩරය මත දකුණු ක්ලික් කර තෝරන්නGet Info

  4. sharing & permissionsකොටසට පහළට අනුචලනය කරන්න

  5. වෙනස්කම් කිරීමට හැකි වන පරිදි අගුළු ඇරීම.

  6. +ඔබගේ පරිශීලක ගිණුම ඔබන්න

  7. Read & Writeවරප්‍රසාද පහත වැටීමට ඔබ තෝරා ගැනීමට වග බලා ගන්න

දැන් ඔබට පැකේජ නොමැතිව ස්ථාපනය කළ හැකි sudoඅතර අවසර ගැටළු විසඳිය යුතුය


3

ගැටලුව: ගෝලීය පැකේජ සහ විධාන ගබඩා කිරීම සඳහා npm භාවිතා කරන නාමාවලි වලට ලිවීමට ඔබට අවසර නැත.

විසඳුම: npm සඳහා අවසර දෙන්න.

පර්යන්තයක් විවෘත කරන්න:

command + spacebar ඉන්පසු 'ටර්මිනල්' ටයිප් කරන්න

මෙම විධානය ඇතුළත් කරන්න:

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

ඔබට මෙය උත්සාහ කළ හැකිය, උබුන්ටු සහ මැක් මත ක්‍රියා කරයි

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

1
මම මෙය ධාවනය කර මා වෙනුවෙන් 100% ක් වැඩ කළෙමි: sudo chown -R $ (whoami) / usr / local / lib / node_modules
leeroya

1

මට පෙනෙන දෙය හොඳම විකල්පය වන්නේ එන්පීඑම් ප්‍රලේඛනයේ යෝජනා කර ඇති විකල්පයයි , එය මුලින් ධාවනය කිරීමෙන් ගෝලීය node_modules පෙරනිමියෙන් ස්ථාපනය කර ඇත්තේ කොතැනදැයි පරීක්ෂා කිරීමයි 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(එය npm විසින් භාවිතා කරනු ඇත) සහ npm භාවිතා කරන ෆෝල්ඩර සඳහා අවසර වෙනස් කිරීම විධානය සමඟ:

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

දැන් ඔබට ඕනෑම මොඩියුලයක් ආරක්ෂිතව ස්ථාපනය කළ හැකිය. මෙය උපකාරී වේ යැයි සිතමු!


1

වින්ඩෝස් 8.1 හි ගැටලුව මම විසඳුවේ එලෙසයි:

  • ඔබගේ nodejs ස්ථාපනය වෙත යන්න (සාමාන්‍යයෙන් C: \ Program Files \ nodejs)
  • Node_modules ෆෝල්ඩරය දකුණු ක්ලික් කර ගුණාංග වෙත යන්න
  • ආරක්ෂක පටිත්ත ක්ලික් කර උසස්
  • ඉහළින් ඔබට "හිමිකරු: පද්ධතිය" පෙනෙනු ඇත, වෙනස් කිරීම ක්ලික් කරන්න
  • ඔබට අවසර අවශ්‍ය පරිශීලකයා ඇතුළත් කර හරි ක්ලික් කරන්න
  • උසස් සැකසුම් වල පතුලේ ඇති කොටුව සලකුණු කර "සියලු ළමා වස්තු අවසර ඇතුළත් කිරීම් මෙම වස්තුවෙන් උරුම වූ අවසර ඇතුළත් කිරීම් සමඟ ප්‍රතිස්ථාපනය කරන්න" සහ හරි ක්ලික් කරන්න
  • ඔබට අවශ්‍ය ඕනෑම දෙයක් npm ස්ථාපනය කරන්න / යාවත්කාලීන කරන්න

1

හොඳම විසඳුම මෙය npm ප්‍රලේඛනය මගින් සපයනු ලැබේ.


උබුන්ටු සඳහා යෝජිත විසඳුම විකල්පය # 2 වේ

කෙටි පියවර:
ගෝලීය ස්ථාපනයන් සඳහා නාමාවලියක් සාදන්න:
mkdir ~/.npm-global

නව නාමාවලි මාර්ගය භාවිතා කිරීම සඳහා npm වින්‍යාස කරන්න : උපසර්ගය යාවත්කාලීන කර තිබේද නැද්ද යන්න තහවුරු කර ගැනීමට ඔබට උදව් කළ හැකිය. ප්‍රති result ලය වනුයේ <ඔබේ නිවාස නාමාවලිය> /. Npm-global
npm config set prefix '~/.npm-global'
npm config get prefix

~ / .Profile ගොනුවක් විවෘත කරන්න හෝ සාදන්න සහ මෙම පේළිය එක් කරන්න:
export PATH=~/.npm-global/bin:$PATH

විධාන රේඛාවට ආපසු, ඔබේ පද්ධති විචල්‍යයන් යාවත්කාලීන කරන්න:
source ~/.profile

පියවර 2-4 වෙනුවට ඔබට අනුරූප ENV විචල්‍යයද භාවිතා කළ හැකිය (උදා: ඔබට ~ / .ප්‍රොෆයිල් වෙනස් කිරීමට අවශ්‍ය නැතිනම්):

NPM_CONFIG_PREFIX=~/.npm-global


මැක් සඳහා යෝජිත විසඳුම විකල්පය 3 වේ

මැක් ඕඑස් හි ඔබට හෝම්බ rew පැකේජ කළමනාකරු භාවිතා කිරීමෙන් මෙම ගැටළුව මුළුමනින්ම වළක්වා ගත හැකිය

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

හිමිකරු වෙනස් කිරීම වෙනුවට මෙය සාක්ෂාත් කර ගැනීම සඳහා උබුන්ටු කණ්ඩායම් භාවිතා කිරීමට මම කැමතියි. එය තරමක් සරලයි.

  1. පළමුව apt-get භාවිතා කර nodejs සහ 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 සහ nodejs යාවත්කාලීන කරන්න

    npm install -g npm

ඔබ සැවොම සුදානම්ය, ඔබේ පරිශීලකයාට සුඩෝ නොමැතිව 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

Ve යෙව්ස් එම් ගේ පිළිතුර මගේ විසඳුමට බෙහෙවින් සමාන ය. මෙන්න මම භාවිතා කළ විධානයන්, ඔහුට වඩා තරමක් වෙනස් විය.

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.