2016-03-12 25 views
12

Tôi đang cố gắng để cài đặt ESLint với NPM bằng cách:Lỗi: EACCES: cho phép từ chối khi cố gắng cài đặt ESLint sử dụng NPM

npm install -g eslint 

Tuy nhiên tôi nhận được lỗi sau:

Deans-Air:~ deangibson$ npm install -g eslint 
npm ERR! tar.unpack untar error /Users/deangibson/.npm/eslint/2.4.0/package.tgz 
npm ERR! Darwin 15.3.0 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "eslint" 
npm ERR! node v4.2.3 
npm ERR! npm v2.14.7 
npm ERR! path /usr/local/lib/node_modules/eslint 
npm ERR! code EACCES 
npm ERR! errno -13 
npm ERR! syscall mkdir 

npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/eslint' 
npm ERR!  at Error (native) 
npm ERR! { [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/eslint'] 
npm ERR! errno: -13, 
npm ERR! code: 'EACCES', 
npm ERR! syscall: 'mkdir', 
npm ERR! path: '/usr/local/lib/node_modules/eslint', 
npm ERR! fstream_type: 'Directory', 
npm ERR! fstream_path: '/usr/local/lib/node_modules/eslint', 
npm ERR! fstream_class: 'DirWriter', 
npm ERR! fstream_stack: 
npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25', 
npm ERR!  '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53', 
npm ERR!  'FSReqWrap.oncomplete (fs.js:82:15)' ] } 
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/deangibson/npm-debug.log 

Và thành thật mà nói tôi nhận được điều này mỗi lần tôi thử và cài đặt một cái gì đó với npm. Đôi khi sử dụng 'sudo' hoạt động, đôi khi nó không ... Làm thế nào tôi có thể sửa lỗi này một lần và cho tất cả?

Trả lời

6

Hãy thử lệnh này sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules}

này sẽ làm thay đổi quyền sở hữu của các thư mục con được sử dụng bởi NPM và một số công cụ khác (lib/node_modules, thùng rác, và chia sẻ).

+4

Tôi khá chắc chắn rằng đây là lệnh tôi chạy đã phá vỡ sudo trên pi của tôi. Tôi bây giờ phải cài đặt lại pi của tôi. Tôi mới dùng Linux nên tôi biết có nguy cơ chạy các lệnh mà tôi không hiểu. – Roaders

14

Sự cố này được ghi lại trong npm docs: Fixing npm permissions.

Bạn có 3 giải pháp có sẵn:

Lựa chọn 1: Thay đổi giấy phép vào thư mục mặc định NPM của

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

Lựa chọn 2: Thay đổi thư mục mặc định NPM của vào một thư mục ẩn trong thư mục chính của bạn

mkdir ~/.npm-global 
npm config set prefix '~/.npm-global' 
export PATH=~/.npm-global/bin:$PATH 
source ~/.profile 

Lựa chọn 3: Sử dụng một trình quản lý gói chăm sóc này cho bạn

brew install node 
cờ
+0

Tùy chọn 2 hoạt động tốt nhưng tôi đã sử dụng thư mục ~/.npm như dấu chấm của tôi đã định cấu hình vị trí đó (nhưng tôi đã quên!) –

+0

upvoting cho tùy chọn 2. Tôi nên làm điều này một thời gian dài trước đây: mồ hôi-nụ cười: –

+0

Nếu bạn sử dụng tùy chọn một, bạn có thể kết thúc với vấn đề này, vì vậy tôi không khuyên bạn nên điều này ở tất cả: https://askubuntu.com/questions/452860/usr-bin-sudo-must-be-owned-by-uid -0-and-have-the-setuid-bit-set # 471503 Người dùng root nên sở hữu/người dùng/bin – Johannes

3

Sử dụng --unsafe-perm = true và --allow-gốc với NPM cài đặt như dưới đây: -

sudo npm install -g eslint --unsafe-perm=true --allow-root 

nó hoạt động như sự quyến rũ đối với tôi.

Các vấn đề liên quan