npm(node module package)을 사용하다 보면 가끔 마주치는 용어이다.
필자는 코드를 테스트할 때 주로 쓰이는 jest 패키지를 설치해서 jest 명령어를 쓰기 위해 터미널에 jest를 입력했으나
사진과 같은 상황을 마주했다.
아마 모두가 안되는 문제였으면 간단한 해결책인 전역으로 설치하는 것으로 해결했겠지만 근본적인 해결책은 아니라고 생각했기에 원인이 무엇인지 파악하고자 했다.
결론부터 말하겠다.
터미널이 명령어를 실행할 때 명령어가 어디 있는지 찾지 못해 생긴 문제였다!!
터미널이 명령을 실행할때는 $PATH에 등록되어있는 경로에서 명령어를 탐색하는데 해당 경로에 내가 사용하고자하는 명령어가 없기 때문에 발생한 상황이었다.
본인의 등록되어 있는 PATH경로는 아래의 명령어로 확인할 수 있다.
echo $PATH
그리고 사용하고자 하는 명령어가 현재 등록된 PATH에서 탐색되는지 여부는 아래 명령어로 확인 가능하다.
which {command}
확인하고 싶다면 아래의 예시로 확인하면 좋다.
which npm
/c/Program Files/nodejs/npm
위와 같은 결과를 반환해 줄 것이다.
혹시 로컬에 설치가 안되있는지 확인하고 싶다면
npm list --depth=0
위의 명령어로 확인하길 바란다.
아마 대부분 명령어를 찾을 수 없는 경우는 로컬에 npm을 설치했기 때문일 것이다.
그렇다면 로컬에 node_module폴더에 .bin폴더로 들어가면 분명히 설치한 패키지의 명령어가 있을 것이다.
.../local/node_module/.bin
위와 같은 경로에 존재할 것이다.
export PATH={경로}:$PATH
위와 같은 명령어로 PATH에 경로를 추가해주자!
위의 방법은 임시적으로 경로를 추가하는 방법이기 때문에 터미널을 종료하면 다시 사용할 수 없다.
window
윈도우 검색창에서 시스템 환경 변수 편집을 검색하여 들어간다.
아래의 환경변수 버튼을 클릭한다.
상대경로로 하면 어느 폴더에서든 로컬환경에서 해당 경로로 찾아간다!
.\node_modules\.bin\
vi ~/.bash_profile
export LOCAL_PATH=./node_modules/.bin
export PATH=${PATH}:$LOCAL_PATH
source ~/.bash_profile
which {command}
이제 확인하고자 하는 명령어가 존재하는지 확인해보자 경로가 잘 나온다면 성공이다!
아주 잘 된다.