← 문제 라이브러리
CI/CD 입문 CICD-007 · 16분

Node 20으로 올린 뒤 CI에서만 NODE_MODULE_VERSION 오류

보안 지원 기간 때문에 CI의 Node 버전을 18에서 20으로 올리는 PR을 머지했습니다.

검수된 문제무료
시나리오

보안 지원 기간 때문에 CI의 Node 버전을 18에서 20으로 올리는 PR을 머지했습니다. 개발자들 PC에서는 Node 20으로 잘 돌아가는데, CI에서는 테스트가 시작하자마자 네이티브 모듈 오류로 실패합니다. 이 저장소는 설치 시간을 줄이려고 node_modules 폴더 통째로 캐시하고 있습니다. 팀원 한 명은 bcrypt 버전을 올려 보자고 하고, 다른 한 명은 Node 18로 되돌리자고 합니다. 이번 주 안에 Node 18 지원이 끝나는 런타임 이미지로 교체해야 합니다.

단서
CI 테스트 로그
Error: The module '/home/runner/work/app/app/node_modules/bcrypt/lib/binding/napi-v3/bcrypt_lib.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 108. This version of Node.js requires
NODE_MODULE_VERSION 115. Please try re-compiling or re-installing
워크플로 (캐시·설치 부분)
- uses: actions/setup-node@v4
  with:
    node-version: 20
- uses: actions/cache@v4
  id: deps
  with:
    path: node_modules
    key: deps-${{ hashFiles('package-lock.json') }}
- if: steps.deps.outputs.cache-hit != 'true'
  run: npm ci

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 캐시 키에 들어가야 할 입력이 무엇인지
  • 네이티브 모듈이 Node 버전에 묶이는 이유
점검 체크리스트
  1. 오류의 NODE_MODULE_VERSION 두 값 확인(108 = Node 18, 115 = Node 20)
  2. 캐시 키에 Node 버전이 들어 있는지
  3. 캐시가 적중하면 설치를 건너뛰는지