npm install -g less ไม่ทำงาน: EACCES: สิทธิ์ถูกปฏิเสธ


203

ฉันกำลังพยายามตั้งค่าให้น้อยลงใน phpstorm ดังนั้นฉันจึงสามารถรวบรวมไฟล์ .less เป็น. css เมื่อบันทึก ฉันได้ติดตั้ง node.js และขั้นตอนต่อไป (ตามhttps://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.htmlนี้ตามhttps://www.jetbrains.com/webstormนี้ สถานีปลายทาง

npm install -g less

อย่างไรก็ตามเมื่อฉันทำสิ่งนี้ฉันได้รับข้อผิดพลาดเหล่านี้

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

ฉันเป็น noob ที่สมบูรณ์ที่นี่และไม่แน่ใจว่าจะทำอย่างไรต่อไป ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก!

คำตอบ:


354

ไม่แนะนำให้ใช้ sudo อาจทำให้คุณได้รับอนุญาตในภายหลัง ในขณะที่ทำงานด้านบนฉันไม่ได้เป็นแฟนของการเปลี่ยนโฟลเดอร์ที่ root เป็นเจ้าของเพื่อให้เขียนได้สำหรับผู้ใช้แม้ว่ามันจะเป็นปัญหากับผู้ใช้หลายคนเท่านั้น ในการแก้ไขปัญหานั้นคุณสามารถใช้กลุ่มโดยมี 'ผู้ใช้ npm' แต่นั่นก็เป็นค่าใช้จ่ายในการดูแลระบบมากกว่า ดูที่นี่สำหรับตัวเลือกในการจัดการกับสิทธิ์จากเอกสาร: https://docs.npmjs.com/getting-started/fixing-npm-permissions

ฉันจะไปที่ตัวเลือก 2:

เพื่อลดโอกาสของข้อผิดพลาดในการอนุญาตคุณสามารถกำหนดค่า npm ให้ใช้ไดเรกทอรีอื่น ในตัวอย่างนี้มันจะเป็นไดเรกทอรีที่ซ่อนอยู่ในโฟลเดอร์บ้านของคุณ

สร้างไดเรกทอรีสำหรับการติดตั้งทั่วโลก:

 mkdir ~/.npm-global

กำหนดค่า npm เพื่อใช้เส้นทางไดเรกทอรีใหม่:

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

เปิดหรือสร้างไฟล์ ~ / .profile และเพิ่มบรรทัดนี้:

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

กลับไปที่บรรทัดรับคำสั่งอัพเดตตัวแปรระบบของคุณ:

 source ~/.profile

ทดสอบ: ดาวน์โหลดแพ็คเกจทั่วโลกโดยไม่ต้องใช้ sudo

npm install -g jshint

หากยังคงแสดงข้อผิดพลาดในการอนุญาตใช้งาน (mac os):

sudo chown -R $USER ~/.npm-global   

ใช้งานได้กับการติดตั้ง Ubuntu เริ่มต้นของ:

sudo apt-get install nodejs npm

ฉันแนะนำnvmถ้าคุณต้องการความยืดหยุ่นมากขึ้นในการจัดการรุ่น: https://github.com/creationix/nvm

ใน MacOS ให้ใช้การหมักมันควรจะทำงานได้โดยไม่ต้องsudoออกนอกกรอบหากคุณใช้งานnpmเวอร์ชันล่าสุด สนุก :)


มุ่งหน้าไปที่ - บน Ubuntu 18.04 ฉันต้องออกจากระบบและเข้าสู่ระบบอีกครั้งก่อนที่การเปลี่ยนแปลงจะถูกนำไปใช้โดยอัตโนมัติเช่นกันทุกหน้าต่างเทอร์มินัลใหม่
Alexander Nied

Alexander คุณแน่ใจหรือไม่ว่าคุณใช้คำสั่ง source ที่ควรดูแลการตั้งค่าตัวแปรสภาพแวดล้อมที่เหมาะสมไม่จำเป็นต้องออกจากระบบ (แต่ใช้งานได้)
Vincent Gerris

สิ่งนี้ใช้งานไม่ได้ติดตั้ง $ npm -g jshint npm ERR! เขียนหลังจากสิ้นสุด npm ERR! บันทึกที่สมบูรณ์ของการทำงานนี้สามารถพบได้ใน: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith

3
Thanx สำหรับเรื่องนี้ "ใน MacOS use brew"
Bijender Singh Shekhawat

110

เรียกใช้คำสั่งเหล่านี้ในหน้าต่างเทอร์มินัล (หมายเหตุ: อย่าแทนที่ส่วน $ USER ... นั่นคือคำสั่ง linux เพื่อให้ผู้ใช้ของคุณ!):

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

7
เป็นความคิดที่ดีไหมที่จะทำให้ตัวเองเป็นเจ้าของสิ่งต่าง ๆ/usr? เกิดอะไรขึ้นถ้ามีคนต้องการติดตั้งสิ่งโหนด
Mark

6
ทำงานสำหรับฉันใน MacOS High Sierra sudo chown -R $USER /usr/local/lib/node_modulesฉันต้องการเพียงหนึ่งในสามของคำสั่ง: @ Mark เป็นเรื่องจริง แต่ก็แน่นอนว่าไม่มีปัญหาหากคุณมีผู้ใช้เพียงคนเดียว
Fabian von Ellerts

@FabianvonEllerts ก็ยังง่ายกว่าที่จะลบไฟล์ระบบโดยไม่ตั้งใจเนื่องจากคุณไม่ต้องการ sudo อีกต่อไป ... ฉันแค่ทำตามแนวทางปฏิบัติที่ดีที่สุดแม้จะอยู่คนเดียว แต่ก็ขึ้นอยู่กับคุณแน่นอน
ทำเครื่องหมาย

ฉันใช้ Mark ยกเว้นว่าคุณมีผู้ใช้หนึ่งคน (และแม้กระทั่ง) คุณไม่ต้องการให้มีไดเรกทอรีย่อย / usr ที่เป็นเจ้าของโดยผู้ใช้หนึ่งรายในกรณีนั้นควรใช้กลุ่ม แต่บางทีอาจจะดีกว่าเพียงแค่ใช้ชงตามที่ฉันพูดถึงในคำตอบของฉันมันจะทำงานได้โดยไม่ต้องรูทออกจากกล่อง
Vincent Gerris

11

ติดตั้งโหนดและ npm อีกครั้งด้วยNode Version Manger (ตามที่เขียนในเอกสารคู่มือ npm ) เพื่อหลีกเลี่ยงข้อผิดพลาดในการอนุญาต:

ใน OSX:

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

หรือทำตามบทความนี้:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

ผู้ใช้ Windows ควรติดตั้งNVM หน้าต่าง สำหรับความช่วยเหลือเพิ่มเติมวิธีการติดตั้ง NVM อ้างREADME NVM

จากนั้นเลือกตัวอย่าง:

nvm install 8.0.0
nvm use 8.0

ตอนนี้คุณสามารถลองอีกครั้ง:

npm install -g less

1
ฉันใช้สิ่งนี้เพื่อแก้ปัญหาการอนุญาตให้ติดตั้งแพคเกจบน CodeSandbox
Keith Taylor

11

คำตอบสำหรับ Mac OS X

คุณไม่มีสิทธิ์การเขียนในไดเร็กทอรี node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

เพิ่มผู้ใช้ของคุณไปยังไดเรกทอรีที่มีการเข้าถึงการเขียน

  1. เปิดโฟลเดอร์ที่มี node_modules

    เปิด / usr / local / lib /

  2. ทำ cmd + I บนโฟลเดอร์ node_modules เพื่อเปิดไดอะล็อกการอนุญาต
  3. เพิ่มผู้ใช้ของคุณเพื่อให้สามารถเข้าถึงแบบอ่านและเขียนในส่วนการแชร์และการอนุญาต ป้อนคำอธิบายรูปภาพที่นี่

ทางออกที่ง่ายที่สุดและมีประสิทธิภาพที่สุดสำหรับ MacOS
itsazzad


7

สำหรับสภาพแวดล้อม mac ของฉัน

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

แก้ปัญหา


ฉันเชื่อว่าสิ่งนี้ได้กล่าวถึงแล้วในคำตอบของ @ VagnerRodrigues ข้างต้น
entpnerd

ใช่ฉันเพิ่งพูดถึงสภาพแวดล้อมของแม็ค
Asadut Zaman

3

เพียงกดคำสั่งด้านล่าง:

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

มาทำลายมันกันเถอะ:

sudo

หมายความว่าเรากำลังเรียกใช้คำสั่งนี้เป็น root ผู้ใช้ขั้นสูงของระบบ นี่เป็นเพราะเราไม่ได้รับอนุญาตให้เขียนลงในโฟลเดอร์นั้น แต่รูทจะสามารถแก้ไขสิทธิ์ได้ คำสั่งนี้ยังหมายถึงระบบจะขอรหัสผ่านของคุณเพื่อยืนยัน

chown

เป็นคำสั่งที่เราใช้ในการเปลี่ยนเจ้าของไฟล์หรือโฟลเดอร์ เราตั้งค่าตัวเลือก -R เพื่อเปลี่ยนเจ้าของซ้ำดังนั้นเราจึงสามารถเข้าถึงเจ้าของไฟล์ทั้งหมดที่มีอยู่แล้วในนั้น

$ USER

ตัวแปรสภาพแวดล้อมถูกตั้งค่าเป็นชื่อผู้ใช้ของคุณโดยอัตโนมัติ

และชิ้นสุดท้ายคือเส้นทางโฟลเดอร์

การรันพา ธ นี้จะทำให้โฟลเดอร์เป็นของคุณดังนั้นคุณจึงสามารถรันคำสั่ง npm install -g ได้อย่างปลอดภัย!


0

ฉันได้ลองวิธีแก้ปัญหาที่แนะนำทั้งหมดแล้ว แต่ก็ไม่ทำงาน

ฉันใช้ macOS Catalina 10.15.3

ไปที่ / usr / local /

เลือกโฟลเดอร์ bin> รับข้อมูล

เพิ่มผู้ใช้ของคุณในการแชร์และการอนุญาต อ่านและเขียนสิทธิ์ ป้อนคำอธิบายรูปภาพที่นี่

และไปที่เทอร์มินัลแล้วรัน npm install -g @ ionic / cli

มันช่วยฉันได้


-1

ใน linux ตรวจสอบให้แน่ใจว่าได้รับสิทธิทั้งหมดด้วย:

sudo su


-3

สวัสดีฉันใช้ Ubuntu 18 และฉันได้รับข้อความแสดงข้อผิดพลาดนี้เช่นกันเมื่อติดตั้ง Prisma จากนั้นฉันก็เพิ่มsudoไว้ด้านหน้า

sudo npm i -g prisma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.