SookDev

Github action Module not found error

01_Error: Cannot find module 'recoil'

사건발단 정빈님의 작업물과 승원님이 작업물을 같은시간에 dev 로 merge. 승원님이 올리신 작업물엔 내가 작업한 recoil 라이브러리가 포함되어 있다. dev 서버에 성공적으로 merge 후 internet server error 가 발생하여 단순 백엔드에서 나는 오류라고 생각했지만, 인프라팀에서 에러를 추적하니 recoil 모듈에서 발생하는 에러였다.
notion image

에러코드

인프라팀에서 보내준 에러 코드는 다음과 같았다.
 

첫번째 시도

git hub action cache 삭제해보기
처음에는 install 받기 전 코드를 push 한 정빈님 코드와 recoil 코드가 충돌하여 나는 에러라고 생각했다.
github action 에 있는 cache 관련 코드를 삭제하고 npm install 부분을 force 처리하여 배포시도했다.
하지만 여전히 에러가 발생했다.
notion image

두번째 시도

기존 node modules 와 package.lock.json 을 삭제 후 재 install 한 뒤 dev 에 push 했다.
하지만 결과는 동일했다.
 
인프라 대홍님과 디버깅을 해보았을때 서버에 recoil 이 없었고, 직접 인스톨하니 정상적으로 받아지며 마침내 dev 서버에도 정상적으로 나타나는것을 확인했다.
결국 클라이언트에서 받은 라이브러리를 git hub action 이 서버로 가져오지 못한다는 것이었는데, 이부분에 관련하여 git hub action 을 세팅한 승섭님께 여쭤보았다.

해결

결론적으로 build.yml 의 "*node_modules*" 코드때문이었다.
매 빌드마다 node_modules 를 실행하면 S3 에 올리는 용량이 커지고 그만큼 과금문제가 생길 수 있기 때문에 제외시킨다고 하셨다.
그렇다면 새로운 라이브러리를 받을때마다 서버에 직접 install 해달라고 해야할까
해당 코드는 리소스때문에 그대로 두되, script > afterInstall.sh 파일을 재실행 해야한다.
package.json 에 서버를 재실행하는 방향으로 적용하여 문제를 해결할 수 있었다.
package.json

Git hub action 도 공부해야겠다 ..