새로운 개인 프로젝트를 위해 NestJS를 전역 설치하면서 마주한 에러를 해결한 과정을 작성해보고자 한다.
거의 이틀동안 이 문제만 잡고 있었던 것 같다.
NestJS 홈페이지 내 안내에 따라 아래 명령어를 통해 NestJS를 설치했다.
$ npm i -g @nestjs/cli
검색해 보니 이 에러는 npm으로 전역 설치를 할 때 발생하는 문제인 것 같았다.
사실 얼마 전에 노마드 코더의 NestJS 강의를 들었을 때 NestJS 설치는 해본 적이 있었기 때문에 더 당황했었다.
할 수 있는 건 구글링뿐..
구글링을 통해 아래 url을 발견했다.
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
문서를 따라 시도했으나, 문제는 해결되지 않았다.
하지만 동일한 에러에 안내된 명령어를 통해 일시적으로 해결할 수 있었다.
에러에서 안내해 준 명령어는 아래와 같았다.
$ sudo chown -R 501:20 "/Users/(사용자명)/.npm”
입력했으나 실패..
다만, 구글링을 통해 'global' 관련 문제라는 것을 알았고, 아주 다양한 블로그를 보다보니 비슷한 명령어를 봤기 때문에 한 번 해보자 하는 마음으로 아래 명령어로 재시도해보았다.
$ sudo chown -R 501:20 "/Users/(사용자명)/.npm-global”
결과는 성공.
일단 NestJS가 전역으로 설치됐다.
하지만 뭔가 편법(?)을 쓴 것 같기도 하고, 내가 한 게 맞는건지 의심이 들기도 했다.
그리고 더 큰(?), 더 짜증나는 문제를 만났다.
NestJS를 설치하고, 버전을 확인하기 위해 'nest -v'을 입력하거나, 새로운 프로젝트를 위해 'nest new project'를 입력하면 계속해서 동일한 에러가 발생했다.
이를 해결하기 위해서는 크게 2가지 방법이 있는 듯했다.
노마드 코더 강의 중에는 빠른 실습을 위해 npx를 사용했었고, 문제가 없었다.
하지만 뭔가 이번에도 npx로만 사용하면 문제를 피하기만 하는 느낌이라서 꼭 해결해보고 싶은 생각이 들었다.
전역 설치할 때 환경변수와 관련된 문제인 것은 분명한데, 아래처럼 내가 어떤 방법을 취해야 할지를 알 수가 없어서 너무 답답했다.
구글링을 하면서 스택오버플로우에 나와있는 해결책은 다 시도해본 것 같다.
전부 실패.
어제 참고했던 페이지를 다시 확인해보고, 다시 시도해봤다.
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
// 1. 홈 디렉토리에 전역설치를 위한 폴더 생성
$ mkdir ~/.npm-global
// 2. 새로운 디렉토리를 사용하도록 npm 설정
$ npm config set prefix '~/.npm-global'
// 3. 환경설정 파일을 생성 또는 실행해서 아래 경로 추가
// export PATH=~/.npm-global/bin:$PATH
// 4. 환경변수 적용
$ source ~/.profile
엥? 성공!
다시 보니 어제는 아예 잘못했다.
내가 사용하는 환경변수에 설명된 경로를 추가하고 다시 적용했어야 했는데, 어제는 모두 터미널에 입력해버렸던 것이다.
허무하긴 했지만 이것저것 시도해보면서 터미널이랑 좀 더 친해진 것 같다.
내가 사용 중인 Shell을 확인할 수 있었고,
현재 환경변수를 확인하거나,
which를 통해 디렉토리를 확인하거나,
whoami를 통해 현재 사용자를 확인하거나,
기초적인 vim 사용법도 다시 익힐 수 있었다.
하나씩 알아나간다고 생각하니 충분히 뿌듯한 시간이었다고 생각한다.
프로젝트를 계속 진행하면서 막히는 부분을 천천히 하나씩 해결해나간다면, 앞으로의 개발에 다 도움이 되리라고 생각한다.