보안 지원 기간 때문에 CI의 Node 버전을 18에서 20으로 올리는 PR을 머지했습니다. 개발자들 PC에서는 Node 20으로 잘 돌아가는데, CI에서는 테스트가 시작하자마자 네이티브 모듈 오류로 실패합니다. 이 저장소는 설치 시간을 줄이려고 node_modules 폴더 통째로 캐시하고 있습니다. 팀원 한 명은 bcrypt 버전을 올려 보자고 하고, 다른 한 명은 Node 18로 되돌리자고 합니다. 이번 주 안에 Node 18 지원이 끝나는 런타임 이미지로 교체해야 합니다.
Node 20으로 올린 뒤 CI에서만 NODE_MODULE_VERSION 오류
보안 지원 기간 때문에 CI의 Node 버전을 18에서 20으로 올리는 PR을 머지했습니다.
시나리오
단서
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과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.
구독하면 이어서 볼 수 있어요
이 문제의 전체 시나리오와 점검 체크리스트, 복구 순서, 모범 풀이는 Pro 구독에서 열립니다.
먼저 볼 것
- 캐시 키에 들어가야 할 입력이 무엇인지
- 네이티브 모듈이 Node 버전에 묶이는 이유
점검 체크리스트
- 오류의 NODE_MODULE_VERSION 두 값 확인(108 = Node 18, 115 = Node 20)
- 캐시 키에 Node 버전이 들어 있는지
- 캐시가 적중하면 설치를 건너뛰는지
복구와 재발 방지
같이 보면 좋은 질문
현장에서 본 비슷한 케이스
0/10