주로 Mac OS + Node.js npm 개발 환경에서 npm install
시 쉽게 마주칠 수 있는 에러다.
Error: EACCES: permission denied, mkdir '/Users/Falcon/IdeaProjects/redis-springboot/src/main/frontend/node_modules/.vite/deps_temp_f4097ff7'
at Object.mkdirSync (node:fs:1395:3)
at runOptimizeDeps (file:///Users/Falcon/IdeaProjects/redis-springboot/src/main/frontend/node_modules/vite/dist/node/chunks/dep-df561101.js:45747:10)
at file:///Users/Falcon/IdeaProjects/redis-springboot/src/main/frontend/node_modules/vite/dist/node/chunks/dep-df561101.js:45129:46
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
에러 첫줄만 해석하면 된다.
EACCESS: permission denied
접근 권한이 없단다.
=> 해당 디렉토리 or 파일 소유자가 누구인지 확인해보자.
# 소유자 확인
$ ls -al | grep <dir_name>
# 예시
$ ls -al | grep node_modules
drwxr-xr-x 3 Falcon staff 96 Sep 25 07:21 assets
drwxr-xr-x 3 Falcon staff 96 Sep 25 07:21 cli
drwxr-xr-x 471 root staff 15072 Sep 25 07:57 node_modules
-rw-r--r-- 1 Falcon staff 285356 Sep 25 07:57 package-lock.json
node_modules
의 소유자가 root
로 설정되어 있다.
npm install
을 하는 주체는 Falcon
(일반 유저) 인데 패키지 설치 경로인 node_modules
소유자가 root
기 때문에 permission denied 가 발생한 것이다.
$ sudo chown -R <username>:<groupname> <dir_name>
# 예시
$ sudo chown -R Falcon:staff node_modules
실 사용자 일반유저인 Falcon
으로 변경했다.
node_modules
소유자가 root
로 되어 있나요?패키지 설치 당시에 sudo
로 설치했기 때문이다.
mkdir
touch
같이 CLI 명령어는 명령어를 실행한 유저의 소유자로 기본 지정된다.
# 패키지 첫 설치 시점에 `sudo` (root) 로 입력
$ sudo npm install
npm install
명령어를 실행한 주체인 소유자 root
가 명령어로 설치한 node_modules
의 소유자가 됨.