Angular2 예제 따라하는 시작부분에서 다음과 같은 오류가 발생하여
해결방법을 찾아보았다.
…
npm Error: EACCES: permission denied, mkdir ‘/.npm/xxxx’
…
맥OS에서 ‘npm install’ 명령을 실행하는 과정에 나왔는데
관련 모듈을 다운로드/설치 하면서 해당 디렉토리에 대한 권한이 없다고 나온 오류다.
결론부터 말하면
1. npm permission 문제를 해결하고
Fixing npm permissions
2. ~/.npm 의 모든 하위 디렉토리에 대해 소유권을 $USER:$GROUP 갖도록 해야함
sudo chown -R $USER:$GROUP ~/.npm
우선 npm permission 고치는 부분은
3가지 방법이 있는데
- Change the permission to npm’s default directory.
– sudo 로 설치되었기 때문에 default directory 역시 root 계정으로 생성되었기 때문임
– root 권한을 $USER:$GROUP 가 되도록 고치던지 - Change npm’s default directory to another directory.
– ‘npm install -g’로 설치되는 위치를 자신의 home directory 밑으로 지정하던지 - Install node with a package manager that takes care of this for you
– 아니면 모든 의존설치를 현재 프로젝트 폴더 아래에 다운로드 되도록 하던지
이중에서 2번이 제일 적절해 보인다.
mkdir ~/.npm-global npm config set prefix '~/.npm-global' # vi ~/.profile (아래 문장을 추가) export PATH=~/.npm-global/bin:$PATH source ~/.profile
이렇게 해 놓고도 ‘EACCES: permission denied’ 오류가 발생하면
default directory에 대한 권한을 깨끗하게 다시한번 변경시키면 된다.
sudo chown -R $USER:$GROUP ~/.npm