Trên cài đặt npm: Từ chối chưa xử lý Lỗi: EACCES: quyền bị từ chối


271

Tôi đã quản lý để làm hỏng npmcài đặt của mình và bất cứ khi nào tôi cố gắng cài đặt các gói bằng cách sử dụng npm install, tôi nhận được thông báo lỗi dọc theo các dòng này:

Lỗi từ chối chưa được xử lý: EACCES: quyền bị từ chối, mở '/Users/marknorgate/.npm/_cacache/tmp/a449402d'

Tôi đã thử cài đặt lại nút & npm và tôi cũng đã cố gắng di chuyển bộ đệm npm của mình ở nơi khác bằng các hướng dẫn này nhưng không có gì hoạt động.

Làm thế nào tôi có thể làm cho nó hoạt động?

Câu trả lời:


921

Khôi phục quyền sở hữu các thư mục liên quan đến npm của người dùng, cho người dùng hiện tại, như thế này:

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

10
Điều này hiệu quả với tôi sau khi tôi đã thử 4-5 thứ khác không hoạt động: 1) --unafe-perm, 2) nâng cấp npm, 3) khởi động lại, 4) chạy với sudo, v.v.
Alex York

2
Tương tự như @AlexYork đối với tôi. Tôi thấy người dùng và nhóm của mình đã là chủ sở hữu của hai người đó nhưng tôi đoán một hoặc hai thư mục con có chủ sở hữu khác nhau. Cảm ơn!
Vedran

1
Điều này làm việc cho tôi :), trước đó tôi đã thử tài liệu này.npmjs.com / . Không thể hiểu nếu nó là một vấn đề tương tự hoặc khác nhau.
nim118

1
Có vẻ như, tại một số điểm trong sự rung động của tôi với nút, một trong những thư mục bộ đệm đã được tạo với rootquyền sở hữu. Điều này cố định lên tất cả lên. Cảm ơn bạn!
Lonnon Foster

2
Điều này làm việc cho tôi, cảm ơn bạn! Tôi đã cố gắng cài đặt lại npm với trình quản lý phiên bản nút được khuyến nghị bởi npm nhưng nó không hoạt động!
Winnie Phan


42

Điều này xảy ra nếu lần đầu tiên bạn chạy NPM với sudo, ví dụ như khi thử cài đặt npm -g.

Các thư mục bộ đệm cần được sở hữu bởi người dùng hiện tại, không phải root.

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

Điều này sẽ trao quyền sở hữu cho các thư mục trên khi chạy với quyền người dùng thông thường (không phải là sudo).

Cũng đáng lưu ý rằng bạn không nên cài đặt các gói toàn cầu bằng SUDO. Nếu bạn gặp vấn đề với quyền, thì đáng để thay đổi thư mục toàn cầu của bạn. Các tài liệu khuyến nghị:

mkdir ~/.npm-global

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

Sau đó, cập nhật PATH của bạn ở bất cứ nơi nào bạn xác định điều đó (~ / .profile, v.v.)

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

Sau đó, bạn sẽ cần đảm bảo biến env PATH được đặt (khởi động lại thiết bị đầu cuối hoặc sử dụng lệnh nguồn)

https://docs.npmjs.com/resolve-eacces-permissions-errors-when-installing-packages-globally


3
Bỏ phiếu này để giải thích rõ ràng về lý do tại sao :)
lnoogn

Vâng Điều này đã giải quyết vấn đề cho tôi khi "giải pháp chính xác" ở trên không có.
John Smith

Tất cả những thứ này nên được trừu tượng hóa bằng npm, nhưng thay vào đó chúng ta phải giải quyết nó bằng tay. Bạn sẽ nghĩ rằng các nhà bảo trì sẽ ưu tiên cao cho việc sửa chữa những thứ như thế này, nhưng tôi biết gì. Cảm ơn đã giải thích lý do tại sao chúng ta cần phải thực hiện các lệnh này!
YungGun


9

Câu trả lời trên không làm việc cho tôi. Chỉ cần cố gắng để chạy lệnh của bạn với --unsafe-perm.

ví dụ

npm install -g node@latest --unsafe-perm

Điều này dường như để giải quyết vấn đề.


@JenLim bạn đã sắp xếp nó hay chưa?
Farooq

Tôi đã giải quyết vấn đề bằng cách chạy như sau trong terminal: npm cache Clear - force.
Aspyn Lim


2

chỉ cần tạo các thư mục _cache/tmptheo .npmcách thủ công tại vị trí /Users/marknorgate/.npm/_cacache/tmpvà chạy lệnh của bạn với quyền truy cập của quản trị viên


2
sudo npm install --unsafe-perm=true --allow-root

Đây là một trong những làm việc cho tôi



1

Đơn giản chỉ cần làm sudo npm cache clean --force --unsafe-permnpm isẽ đi bình thường.


1

thay đổi quyền sở hữu

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config 

làm việc khi tôi cài đặt gói bằng sudo


1

Hãy thử sử dụng điều này: Trên dòng lệnh, trong thư mục chính của bạn, hãy 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'

Trong trình soạn thảo văn bản ưa thích của bạn, hãy mở hoặc tạo tệp ~ / .profile và thêm dòng này:

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

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

source ~/.profile

Bây giờ sử dụng cài đặt npm nó sẽ hoạt động.


0

bạn có thể thử lệnh sau cho expo:

sudo chown -R $USER:$GROUP ~/.expo


0

Đơn giản chỉ cần chạy trên thiết bị đầu cuối: sudo chown -R $(whoami) ~/.npm

Điều này làm việc cho tôi !!


-1

Cái này hoạt động với tôi:

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

Tôi không sử dụng -gvì tôi là người dùng duy nhất. Tôi đã sử dụng MacBook Air.

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.