NPM permission 문제 해결하기

개발 중 global 스콥으로 npm module을 설치하려고 하는 경우 access permission error를 접하게 되는 경우가 있다.

이런 경우 대부분은 공용 머신 이거나 mac과 같은 환경의 경우들이며, npm이 global 스콥으로 파일을 쓰려는 폴더에 접근 권한이 없는 것이 에러의 이유이다.

오늘은 이런 문제를 만날 경우 해결할 수 있는 방법을 알아 보도록 하겠다.

EACCESS error는 다음과 같이 3가지 방법으로 해결이 가능하다.

Option 1: npm의 기본 디렉터리 권한을 변경한다.

1. npm의 디렉터리 상태를 확인한다.

npm config get prefix

많은 경우 /uer/local일 것이다. 만약 /usr로 되어 있다면 option 2로 해결해야 한다.

2. npm의 디렉터리에 owner를 현재 사용자로 설정한다.

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

이 변경은 하위 폴더의 권한 까지 모두 변경한다.

Option 2: npm의 기본 디렉터리를 다른 디렉터리로 변경한다.

/usr와 같이 공통 디렉터리의 owner를 변경하지 말아야 할 경우 이 방법을 사용한다.

1. hidden 디렉터리를 생성한다.

mkdir ~/.npm-global

2. npm의 기본 폴더를 변경한다.

npm config set prefix ‘~/.npm-global’

3. ~/.profile 파일을 생성하고 아래 내용을 추가한다.

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

4. command line에서 아래를 수행한다.

source ~/.profile

이제 아래 명령으로 sudo 없이 global 설치가 되는지 확인한다.

npm install -g jshint

~/.profile  파일 내용 변경을 원치 않는 경우 2~4 단계 대신 아래 명령으로 환경 변수를 바꾼다.

NPM_CONFIG_PREFIX=~/.npm-global

Option 3:  위 내용을 대신 해결해 주는 package manager를 사용한다.

mac의 경우 Homebrew를 통해 fresh 설치하는 경우라면 위와 같은 작업이 필요하지 않다.

brew install node

참고) https://docs.npmjs.com/getting-started/fixing-npm-permissions

2 thoughts on “NPM permission 문제 해결하기

Leave a comment