어떠한 레파지토리 개발환경을 세팅해본 개발자가 모두 퇴사했고 현직 개발자 아무도 세팅해본적 없는 레파지토리의 코드를 수정하는 업무를 받았었다. 그것도 무려 docker 환경이었다. readme의 설명도 부족했고 현재는 사용하지 않는 바뀐 명령어도 있었다. docker 및 ssr 환경세팅은 백엔드 리드개발자 분께서 개발환경 세팅하는데 고생하셨고 나는 거의 주로 옆에 붙어서 지켜보는 역할을 했다..^^
가장 문제가 되었던 점은 pdf 다운로드 기능 중 생긴 에러였다. api도 그냥 500 에러만 뜨고 에러명도 알 수가 없어서 일일히 코드를 찾아가 어디서 에러나는 지 찍어봐야 했다.
찍어본 결과 에러명은 Chromium revision is not downloaded
이었다.
찾아보니 Puppeteer 가 설치되지 않아서 생긴 에러였다. Puppeteer 는 Headless Chrome 혹은 Chromium 를 제어하도록 도와주는 라이브러리라고 한다.
여기서 Headless 모드라는 것은 보통 웹 브라우저가 GUI로 동작하게 되는데 GUI가 없이 프로그램상으로만 돌리는 것을 의미한다.
docker 안의 package.json에도 멀쩡히 Puppeteer 가 있었고 npm install을 했는데도 docker 환경에서 Puppeteer가 제대로 설치가 안된것이다. 검색해보니 나와 비슷한 증상을 겪는 사람들이 있었다.
내가 해결한 방법은 아래와 같다.
에러명 - Chromium revision is not downloaded
내가 해결한 방법)
sudo npm install puppeteer --unsafe-perm=true --allow-root
참고 url : https://stackoverflow.com/questions/53997175/puppeteer-error-chromium-revision-is-not-downloaded
해결 후 더 찾아보니 이런 공식 문서가 있었다.
Puppeteer in Docker : https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-in-docker