npm 설치시 : 처리되지 않은 거부 오류 : EACCES : 권한이 거부되었습니다.


271

npm설치 를 손상 시켰 으며를 사용하여 패키지를 설치하려고 할 때마다 npm install다음과 같은 오류 메시지가 나타납니다.

처리되지 않은 거부 오류 : EACCES : 권한이 거부되었습니다. '/Users/marknorgate/.npm/_cacache/tmp/a449402d'를여십시오.

node & npm을 다시 설치하려고 시도했지만 이 지침을 사용하여 npm 캐시를 다른 곳으로 옮기려고 했지만 아무것도 작동하지 않습니다.

어떻게 작동시킬 수 있습니까?

답변:


924

다음과 같이 사용자 npm 관련 폴더의 소유권을 현재 사용자에게 복원하십시오.

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

10
2) 업그레이드 NPM, 3) 등 등,), (4)를 다시 시작 sudo를 실행) 1 --unsafe-파마 : 나는 작동하지 않았다 4-5 다른 것들을 시도 후이 나를 위해 일한
알렉스 뉴욕

2
@AlexYork와 동일합니다. 내 사용자와 그룹을 이미 두 사람의 소유자로 보았지만 하위 디렉토리 또는 두 사람이 다른 소유자를 가지고 있다고 생각합니다. 감사!
Vedran

1
나는이 docs.npmjs.com/… 을 시도하기 전에 :) 나를 위해 일했습니다 . 같은 문제인지 다른지를 이해할 수 없습니다.
nim118

1
노드로 인한 결함의 어느 시점에서 캐시 디렉토리 중 하나가 root소유권 을 가지고 생성 된 것처럼 보입니다 . 이것은 모두 고쳐졌다. 감사합니다!
Lonnon Foster

2
이것은 나를 위해 일했습니다. 감사합니다! npm에서 권장하는 노드 버전 관리자로 npm을 다시 설치하려고 시도했지만 작동하지 않았습니다!
Winnie Phan


42

NPM을 처음 실행할 때 예를 들어 npm install -g를 수행하려고 할 때 sudo를 사용하는 경우에 발생합니다.

캐시 폴더는 루트가 아닌 현재 사용자가 소유해야합니다.

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

이렇게하면 sudo가 아닌 일반 사용자 권한으로 실행할 때 위 폴더에 대한 소유권이 부여됩니다.

SUDO를 사용하여 전역 패키지를 설치해서는 안된다는 점도 주목할 가치가 있습니다. 권한 문제가 발생하면 글로벌 디렉토리를 변경하는 것이 좋습니다. 문서는 다음을 권장합니다.

mkdir ~/.npm-global

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

그런 다음 정의하는 곳 어디에서나 PATH 업데이트 (~ / .profile 등)

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

그런 다음 PATH env 변수가 설정되어 있는지 확인해야합니다 (터미널 다시 시작 또는 source 명령 사용)

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


3
이유에 대한 명확한 설명을 위해 이것을 투표 :)
lnoogn

예. 위의 "올바른 해결책"이 그렇지 않은 경우 문제가 해결되었습니다.
John Smith

이 모든 것은 npm에 의해 추상화되어야하지만 대신 수동으로 처리해야합니다. 관리자가 이와 같은 문제를 해결하는 것이 우선 순위가 높다고 생각하지만 무엇을 알고 있습니까? 이러한 명령을 수행해야하는 이유 를 설명해 주셔서 감사 합니다!
YungGun


9

위의 답변은 저에게 효과적이지 않았습니다. 로 명령을 실행하십시오 --unsafe-perm.

예 :

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

이것은 문제를 해결하는 것 같습니다.


@JenLim 당신은 그것을 분류 했습니까?
Junaid Farooq

터미널에서 다음을 실행하여 문제를 해결했습니다. npm cache clear — force.
Aspyn Lim


2

위치 _cache/tmp.npm수동으로 폴더 를 만들고 /Users/marknorgate/.npm/_cacache/tmp관리자 권한으로 명령을 실행하십시오.





1

소유권 변경

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

sudo를 사용하여 패키지를 설치했을 때 일했습니다.


1

다음을 사용하십시오. 명령 행의 홈 디렉토리에 글로벌 설치를위한 디렉토리를 작성하십시오.

mkdir ~/.npm-global

새 디렉토리 경로를 사용하도록 npm을 구성하십시오.

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

원하는 텍스트 편집기에서 ~ / .profile 파일을 열거 나 작성하고 다음 행을 추가하십시오.

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

명령 행에서 시스템 변수를 업데이트하십시오.

source ~/.profile

이제 npm install을 사용하십시오.


0

expo에 다음 명령을 시도 할 수 있습니다.

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


0

터미널에서 간단히 실행하십시오. sudo chown -R $(whoami) ~/.npm

이것은 나를 위해 일했다!!


-1

이것은 나를 위해 작동합니다 :

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

내가 -g유일한 사용자이기 때문에 나는 사용하지 않았다 . MacBook Air를 사용했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.