npm install -g less không hoạt động: EACCES: quyền bị từ chối


203

Tôi đang cố gắng thiết lập ít hơn trên phpstorm để tôi có thể biên dịch các tệp .less thành .css khi lưu. Tôi đã cài đặt node.js và bước tiếp theo (theo https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) này đang chạy lệnh này trong thiết bị đầu cuối

npm install -g less

Tuy nhiên khi tôi làm điều này, tôi nhận được những lỗi này

  ~  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

Tôi là một người hoàn toàn ở đây và không biết phải làm gì tiếp theo. Bất kỳ trợ giúp sẽ được rất đánh giá cao!

Câu trả lời:


354

Sử dụng sudo không được khuyến khích. Nó có thể cung cấp cho bạn vấn đề cho phép sau này. Mặc dù các công việc trên, tôi không phải là người thích thay đổi các thư mục do root sở hữu để có thể ghi cho người dùng, mặc dù nó chỉ có thể là một vấn đề với nhiều người dùng. Để giải quyết vấn đề đó, bạn có thể sử dụng một nhóm, với 'npm người dùng' nhưng đó cũng là chi phí quản trị cao hơn. Xem ở đây để biết các tùy chọn để đối phó với các quyền từ tài liệu: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Tôi sẽ chọn tùy chọn 2:

Để giảm thiểu khả năng xảy ra lỗi quyền, bạn có thể định cấu hình npm để sử dụng một thư mục khác. Trong ví dụ này, nó sẽ là một thư mục ẩn trong thư mục nhà của bạn.

Tạo một thư mục để cài đặt toàn cầu:

 mkdir ~/.npm-global

Cấu hình npm để sử dụng đường dẫn thư mục mới:

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

Mở hoặc tạo tệp ~ / .profile và thêm dòng này:

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

Quay lại dòng lệnh, cập nhật các biến hệ thống của bạn:

 source ~/.profile

Kiểm tra: Tải xuống một gói trên toàn cầu mà không cần sử dụng sudo.

npm install -g jshint

Nếu vẫn hiển thị lỗi chạy (mac os):

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

Điều này hoạt động với cài đặt Ubuntu mặc định của:

sudo apt-get install nodejs npm

Tôi khuyên bạn nên nvmnếu bạn muốn linh hoạt hơn trong việc quản lý các phiên bản: https://github.com/creationix/nvm

Trên MacOS, hãy sử dụng brew, nó sẽ hoạt động mà không cần sudothiết nếu bạn đang dùng npmphiên bản gần đây . Thưởng thức :)


Cảnh giác-- trên Ubuntu 18.04 Tôi phải đăng xuất và đăng nhập lại trước khi thay đổi được áp dụng tự động quá tất cả các cửa sổ đầu cuối mới.
Alexander Nied

Alexander, bạn có chắc chắn rằng bạn đã sử dụng lệnh nguồn? Điều đó cần quan tâm đến việc thiết lập các biến môi trường phù hợp, không cần đăng xuất (nhưng hoạt động).
Vincent Gerris

điều này không hoạt động $ npm cài đặt -g jshint npm ERR! viết sau khi kết thúc npm ERR! Một bản ghi đầy đủ của lần chạy này có thể được tìm thấy trong: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith

3
Thanx cho điều này "Trên MacOS sử dụng bia"
Bijender Singh Shekhawat

110

Chạy các lệnh này trong cửa sổ đầu cuối (lưu ý: KHÔNG thay thế phần $ USER ... đó là lệnh linux để có được người dùng của bạn!):

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

7
Đó có phải là một ý tưởng tốt để biến mình thành chủ sở hữu của mọi thứ trong /usr? Điều gì nếu một người khác muốn cài đặt công cụ nút?
Đánh dấu

6
Làm việc cho tôi trên macOS High Sierra, tôi chỉ cần một trong ba lệnh : sudo chown -R $USER /usr/local/lib/node_modules. @Mark Điều đó đúng, nhưng tất nhiên không có vấn đề gì nếu bạn chỉ có một người dùng.
Fabian von Ellerts

@FabianvonEllerts Chà, việc vô tình xóa các tệp hệ thống vẫn dễ dàng hơn, vì bạn sẽ không cần sudo nữa ... Tôi chỉ cần làm theo các thực tiễn tốt nhất ngay cả khi ở một mình, nhưng tất nhiên tùy thuộc vào bạn.
Đánh dấu

Tôi với Mark, trừ khi bạn có một người dùng (và thậm chí sau đó), bạn không muốn có các thư mục con / usr do một người dùng sở hữu, trong trường hợp đó, sử dụng nhóm tốt hơn. Nhưng có lẽ thậm chí tốt hơn, chỉ cần sử dụng brew như tôi đã đề cập trong câu trả lời của tôi, nó sẽ hoạt động mà không cần root ra khỏi hộp.
Vincent Gerris

11

Cài đặt lại nút và npm với Node Phiên bản nút (theo như được ghi trong tài liệu npm ) để tránh lỗi cấp phép:

Trong OSX:

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

hoặc theo dõi bài viết này:

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

Người dùng Windows nên cài đặt nvm-windows . Để được trợ giúp thêm về cách cài đặt nvm, hãy tham khảo nvm readme .

Sau đó chọn ví dụ:

nvm install 8.0.0
nvm use 8.0

Bây giờ bạn có thể thử lại:

npm install -g less

1
Tôi đã sử dụng điều này để giải quyết các vấn đề về quyền cài đặt các gói trên CodeSandbox.
Keith Taylor

11

Mac OS X Trả lời

Bạn không có quyền ghi vào thư mục node_modules

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

Thêm người dùng của bạn vào thư mục với quyền truy cập ghi

  1. Mở thư mục chứa node_modules

    mở / usr / địa phương / lib /

  2. Thực hiện một cmd + I trên thư mục node_modules để mở hộp thoại cấp phép
  3. Thêm người dùng của bạn để có quyền truy cập đọc và viết trong phần chia sẻ và quyền nhập mô tả hình ảnh ở đây

Giải pháp đơn giản và hiệu quả nhất cho MacOS
itazzad


7

Đối với môi trường mac của tôi

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

giải quyết vấn đề


Tôi tin rằng điều này đã được đề cập trong câu trả lời của @ VagnerRodrigues ở trên.
entpnerd

Đúng vậy, tôi vừa đề cập đến môi trường mac
Asadut Zaman

3

Chỉ cần nhấn bên dưới lệnh:

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

Hãy phá vỡ nó:

sudo

có nghĩa là chúng tôi đang chạy lệnh này với quyền root, hệ thống siêu người dùng. Điều này là do chúng tôi không có quyền ghi vào thư mục đó, nhưng root sẽ có thể sửa bất kỳ quyền nào. Lệnh này cũng có nghĩa là hệ thống sẽ yêu cầu mật khẩu của bạn để xác nhận.

chown

là lệnh chúng tôi sử dụng để thay đổi chủ sở hữu của tệp hoặc thư mục. Chúng tôi đặt tùy chọn -R để thay đổi chủ sở hữu theo cách đệ quy, vì vậy chúng tôi cũng có quyền truy cập của chủ sở hữu vào tất cả các tệp đã có trong đó.

$ NGƯỜI DÙNG

là một biến môi trường tự động được đặt thành tên người dùng của bạn.

Và phần cuối cùng là đường dẫn thư mục.

Chạy đường dẫn này sẽ làm cho thư mục của bạn, vì vậy bạn có thể chạy các lệnh -g cài đặt npm một cách an toàn!


0

Tôi đã thử tất cả các giải pháp được đề xuất nhưng không có gì hiệu quả.

Tôi đang sử dụng macOS Catalina 10.15.3

Chuyển đến / usr / địa phương /

Chọn thư mục bin> Nhận thông tin

Thêm người dùng của bạn vào Chia sẻ & Quyền. Đọc & Viết Quyền. nhập mô tả hình ảnh ở đây

Và đi đến terminal và chạy npm install -g @ ionic / cli

Nó đã giúp tôi.


-1

Trong linux, đảm bảo có được tất cả quyền hạn với:

sudo su


-3

Xin chào, tôi đang sử dụng Ubuntu 18 và tôi cũng đã nhận được thông báo lỗi này khi cài đặt Prisma, sau đó tôi chỉ cần thêm sudovào phía trước

sudo npm i -g prisma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.