← 전체 글로 돌아가기

웹 개발

실제 서비스에서 빌드 실패가 나올 때

배포 직전의 빌드 실패는 개발 중에 발견하지 못한 문제들을 드러낸다. 체계적으로 원인을 파악하는 순서가 있다.

빌드 실패의 주요 원인들

운영 환경에서 빌드가 실패하면 배포는 당연히 안 되고 사용자 서비스가 중단된다. 내가 경험한 빌드 실패의 주요 원인:

  • 타입 에러 (TypeScript)
  • 의존성 버전 충돌
  • 환경 변수 누락
  • 로컬에서만 통과하는 설정

빌드 로그 읽기

npm run build 2>&1 | tee build.log

로그의 마지막 부분부터 거슬러 올라가며 읽는다. 에러 메시지 바로 위에 진짜 원인이 있는 경우가 많다.

"Cannot find module 'xyz'" 같은 에러면 node_modules 설치 상태를 확인한다. 로컬에서는 이미 설치되어 있어서 놓치기 쉽다.

권한과 시간대 확인

런타임 환경(서버, 컨테이너)의 권한을 확인한다:

# 빌드 프로세스가 실행되는 사용자
whoami

# 현재 시간대 (타임스탐프 기반 캐시가 있으면 중요)
date

# 디스크 여유 공간
df -h

빌드 과정에서 대량의 임시 파일이 생기므로 디스크가 가득 차있으면 실패한다.

배포 환경과 로컬의 차이를 최소화

로컬에서는 통과하는데 배포 환경에서만 실패하는 경우가 있다. 이는 Node 버전, npm 버전, 환경 변수 차이 때문이다.

# 동일 환경 재현
node --version
npm --version

# 의존성 깔끔하게 재설치
rm -rf node_modules package-lock.json
npm install
npm run build

한 가지씩만 수정하기

빌드 성공 후 기록을 남긴다:

  • 언제 수정했는가
  • 어떤 파일을 수정했는가
  • 오류 메시지가 정확히 무엇이었는가

다음에 유사한 오류가 나면 지난 기록을 보고 빠르게 대처할 수 있다. 특히 팀으로 개발할 때 이런 기록이 매우 유용하다.