반응형
현상
npm run start 혹은 npm start 등 nodejs 환경 app을 실행할때 아래와 같은 메시지가 나타나는 경우가 있다.
- Error: Cannot find module '패키지명'
- code: 'MODULE_NOT_FOUND'
원인
원인은 말그대로다. 앱을 실행하는데 프로젝트 디렉토리에 앱을 구동할 관련 패키지가 없다는 뜻이다. NO! Module! 즉, 패키지 모듈이 없는데!?! 일단 저기서 친절하게도 알려준다. http-errors 패키지가 없다고. 그럼 해당 패키지를 설치해주면 된다. 보통 이런 케이스가 많이 생기는 케이스는 경험적으로 아래 두 케이스다.
- 프로젝트 디렉토리에 node_modules 경로가 아예 없는 경우
- express나 react 앱도 기본적으로 기본 의종성들이 있기때문에 node_modules 이 없을 수 없다. 만약 없는 케이스라면 111% 확률로, git 에서 방금 clone 한 프로젝트가 아닐지 의심해보자.
- 보통 의존성은 package.json 에만 명시하고 세부적인 의존성 폴더인 node_modules 폴더는 git 저장소에 커밋해두진 않으니까 말이다.
- 지금 캡쳐한 위 케이스도 그 케이스다. 지금 http-errors 라는 패키지가 없다고하는데, 이 패키지는 express 앱의 기본 의존성이다. 즉, 의존성이 통째로 없는데 그 첫빠따부터 없다고 에러로 뿜은 것이다.
- node_modules 디렉토리는 있으나, 해당 패키지만 없는 경우
- 보통 이 케이스는 원래 잘 작동하다가 로컬에서 몇몇 패키지가 추가되었고 git 저장소에까지 커밋이 되었고, 리모트 서버에 해당 소스로 동기화까지 이루어졌으나, 위의 이유처럼 따로 패키지 설치를 하지 않았다면 node_modules 에는 해당 패키지가 없어 이런 오류를 뿜을 수 있다.
해결 방법
패키지 설치
npm install
프로젝트 경로에서 위 명령어 입력하여 package.json 에 명시된 패키지들을 설치해주자. 그리고 다시 실행해보자.
프로젝트 재실행
관련 의존성 패키지가 다 설치 후 실행해보면 정상적으로 실행되는 것을 볼 수 있다.
반응형