node기반의 grunt를 사용하면서 가끔씩 Gruntfile.js를 찾지 못하거나 grunt-cli를 실행시킬 수 없다고 뜨는 경우가 있었다. 하지만 분명 전역으로 설치했고 해당 루트에 gruntfile.js가 있음에도 발생하는 오류였다. 처음에는 단순한 인텔리제이 오류인줄 알았다. 컴퓨터를 리부팅시키거나 좀 지난후에 실행시키면 정상적으로 동작하였기 때문이다.
하지만 터미널에서도 같은 증상이 발생하고 같은 현상이 지속적으로 발생하다 보니 노드를 다시 설치하기로 마음먹었다. 그 동안 별생각없이 node를 sudo npm install 이렇게 sudo계정을 이용해서 하고 있었다. 그러다보니 외부에서 쓰는 script들을 다시 고쳐서 써야 했었다. 이번에 오류난것은 사실 이것 때문은 아니었지만 node 먼저 재설치를 해보기로 마음먹었다. 이번 포스팅에서는 node를 다시 설정하면서 겪었던 것들을 적어봤다.
node삭제
node야 홈페이지가서 설치하면 되지만 모든 node관련 라이브러리들을 깔끔하게 지우는것은 쉽지 않았다. 그러던 중 아래와 같은 명령어를 찾아서 일일히 rm하지 않고도 한번에 삭제할 수 있었다.
/usr/local/lib 하위의 모든 node 패키지들을 삭제해준다. 이 후에 node 홈페이지에서 node를 설치하는데 주의할점은 모든 사용자가 아니라 현재 사용하자고자하는 계정의 홈에 설치해야 한다. /usr/local/bin/node에 node가 설치되면 안된다. npm install로 패키지를 받을 수 있다면 성공한것이다.
nvm
노드에는 nvm이라는 node version manager가 있다 버전이 올라가거나 아니면 다른버전의 노드를 사용하고 싶을 때 nvm을 통해서 설치 할 수 있다. 현재 프로젝트에서 node최신 버전이 아닌 구버전을 쓰고 있었는데 사이드이펙트를 방지하기 위해서 node버전을 내려야만 했다.
만약 nvm의 경로를 제대로 잡지 못한다면 ~/.bashrc 에 NVM_DIR의 path를 적어준다. 적용후 node –version을 쳐보면 0.10의 최신버전으로 node가 적용된것을 알 수 있다.
Gruntfile.js
그런트의 버그 일지도 모르지만 gruntfile.js에 오류가 있으면 해당 오류를 띄어주지 않고 처음에 썼던 범용적인 에러를 띄우는 경우가 생기기도 한다. 처음에 발생했던 오류가 바로 이 문법 오류 때문이었다. 혹시 gruntfile.js에 문법오류가 있는지 살펴보고 패키지 버전을 잘 명시한 후에도 안된다면 node_module을 지우고 npm install을 다시해 보자