[heroku] app crashed 트러블 슈팅
heroku
VM 환경에서 배포를 위한 설정 과정 없이 프로젝트를 쉽게 배포할 수 있는 호스팅 서비스.
장점
1.github 상에 프로젝트만 구축해두면 쉽게 배포가 가능하다. 호스팅 서비스가 갖는 근본적인 장점이다.
2. 무료다. 단, 24시간 배포 서버가 깨어있지 않으며 30분 간 트래픽이 없다면 sleep 모드에 들어간다.
단점
1. sleep 모드에서 트래픽이 발생하면 서버가 wake up하느라 평소의 접속보다 긴 응답 시간이 걸린다.
2.(오늘의 목적) error를 추적하기 어려웠다.
APP_CRASHED
local에서 app이 잘 작동하였음에도 호스팅 된 이후에 app이 crashed 됐다는 log를 마주하면 정말 당황스럽다.
error H10에 해당하는 오류 상황이다.

참고: https://stackoverflow.com/questions/13496827/heroku-deployment-error-h10-app-crashed
이미지를 보다시피 트러블슈팅이 어려운 이유는 error log가 짤리기 때문이다.
대충 node modules에서 오류가 발생한 건 알겠는데 이것만으로는 문제 해결을 위한 가설을 세우기가 어렵다.
만약 VM이라면 해당 환경에 접속하여 에러를 자세히 확인할 수 있을 것이다.
마찬가지로, 우리가 heroku 배포 환경에 접속할 수 있다면?
RUN CONSOLE
heroku app을 확인하는 화면에서 오른쪽 상단의 more 탭을 클릭하면 heroku 배포 환경에서 console을 돌려볼 수 있다.
app을 실행하는 명령어부터 폴더 구조를 확인하여 app 실행에 필요한 build 파일이 잘 생성되는지 등을 직접 확인해볼 수 있다.
필자는 npm start로 app을 실행해보았을 때, 어디서 error_module_not_found가 발생하였는지를 발견할 수 있었다.
해당 앱 실행에 매우 중요한 swagger-ui-express library가 devDependencies에만 등록되어있던 것이 문제였다.
결론
heroku 배포 환경에서 error를 더 자세히 발견할 수 있는 방법! console을 이용하자.