'zsh: command not found: nest' 해결 과정

최진우·2023년 3월 5일
0

새로운 개인 프로젝트를 위해 NestJS를 전역 설치하면서 마주한 에러를 해결한 과정을 작성해보고자 한다.
거의 이틀동안 이 문제만 잡고 있었던 것 같다.

NestJS 홈페이지 내 안내에 따라 아래 명령어를 통해 NestJS를 설치했다.

$ npm i -g @nestjs/cli

1. EACCES permission 관련 에러와 함께 설치 실패

검색해 보니 이 에러는 npm으로 전역 설치를 할 때 발생하는 문제인 것 같았다.
사실 얼마 전에 노마드 코더의 NestJS 강의를 들었을 때 NestJS 설치는 해본 적이 있었기 때문에 더 당황했었다.
할 수 있는 건 구글링뿐..

2. 일시적인 해결

구글링을 통해 아래 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가 전역으로 설치됐다.
하지만 뭔가 편법(?)을 쓴 것 같기도 하고, 내가 한 게 맞는건지 의심이 들기도 했다.
그리고 더 큰(?), 더 짜증나는 문제를 만났다.

3. 'zsh: command not found: nest' 에러 발생

NestJS를 설치하고, 버전을 확인하기 위해 'nest -v'을 입력하거나, 새로운 프로젝트를 위해 'nest new project'를 입력하면 계속해서 동일한 에러가 발생했다.

이를 해결하기 위해서는 크게 2가지 방법이 있는 듯했다.

  • npx로 실행하기
  • 전역변수 설정 변경하기

노마드 코더 강의 중에는 빠른 실습을 위해 npx를 사용했었고, 문제가 없었다.
하지만 뭔가 이번에도 npx로만 사용하면 문제를 피하기만 하는 느낌이라서 꼭 해결해보고 싶은 생각이 들었다.

전역 설치할 때 환경변수와 관련된 문제인 것은 분명한데, 아래처럼 내가 어떤 방법을 취해야 할지를 알 수가 없어서 너무 답답했다.

  • 환경변수에 nest를 위한 경로를 추가해야 하는 건가?
  • 만약 그렇다면 nest가 설치된 경로는 어떻게 찾아야 하지?
  • 아니면 npm global에 관한 경로를 추가해야 하는 건가?

구글링을 하면서 스택오버플로우에 나와있는 해결책은 다 시도해본 것 같다.
전부 실패.

어제 참고했던 페이지를 다시 확인해보고, 다시 시도해봤다.
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 사용법도 다시 익힐 수 있었다.

하나씩 알아나간다고 생각하니 충분히 뿌듯한 시간이었다고 생각한다.
프로젝트를 계속 진행하면서 막히는 부분을 천천히 하나씩 해결해나간다면, 앞으로의 개발에 다 도움이 되리라고 생각한다.

profile
함께하고 싶은 백엔드 개발자

0개의 댓글