Watch at Ease세상을 읽고, 일상의 답을 찾다.

기술 · 실용 가이드

npm EINTEGRITY가 발생하나요? 초기화 전에 예상 값과 받은 tarball을 추적하세요

불일치는 lockfile, 로컬 캐시, 사설 registry·프록시, 변경된 메타데이터 어디에서든 생길 수 있습니다. 증거를 보존하고 실패한 경계만 고치세요.

lockfile 예상 다이제스트와 받은 npm tarball을 비교하는 원본 일러스트.
원본 일러스트: 변경 전에 EINTEGRITY 양쪽을 보존하세요. Watch at Ease

EINTEGRITY는 받은 패키지 바이트의 다이제스트가 npm의 예상 값과 다르다는 증거입니다. lockfile 삭제나 TLS 검증 해제를 지시하는 오류가 아닙니다.

패키지, wanted/got, 바이트 수, resolved, integrity, registry, npm 버전과 격리 캐시 결과를 하나의 원장에 남기세요.

불일치를 출처 기록으로 보존

패키지, 버전, wanted/got, 바이트 수, npm/Node, 명령, 환경, debug log를 기록합니다. registry와 cache를 확인하되 token은 공개하지 마세요.

package-lock.json의 resolved와 integrity를 기록합니다. 받은 쪽을 시험하는 동안 예상 값인 lockfile은 바꾸지 않습니다.

삭제 전에 로컬 캐시 검증

npm cache verify와 npm doctor cache를 실행합니다. 콘텐츠 주소와 자동 재가져오기 결과로 진단을 나눕니다.

새 빈 캐시로 같은 설치를 반복합니다. 성공하면 옛 캐시를 격리하고, 같은 got이면 다른 경계를 조사합니다.

직접 경로와 설정 registry 비교

resolved URL과 설정으로 npmjs, 사설 registry, Verdaccio, Azure Artifacts 또는 프록시를 확인합니다. strict SSL을 끄지 마세요.

승인된 직접 경로와 프록시에서 같은 패키지를 받아 SHA-512, 바이트 수, redirect와 content type을 비교합니다.

lockfile·캐시·registry 변화 분류

격리 캐시가 일치하면 옛 캐시나 로컬 파일시스템, 직접 경로만 일치하면 프록시가 경계입니다. 로그를 보존하고 한 artifact만 무효화합니다.

어떤 승인 출처도 일치하지 않으면 재게시, 잘못된 미러 또는 의도된 변경을 조사하고 승인 뒤에만 lockfile을 재생성합니다.

재현 가능한 CI 증거로 종료

같은 lockfile과 registry로 재시도하고 종료 코드, cache, 최종 digest, lockfile 불변을 확인합니다.

CI cache key에 lockfile hash와 registry를 반영하고 첫 실패 log를 보존합니다.

로컬 캐시, 프록시, 출처 변경과 미확인 경계를 구분하는 원본 일러스트.
원본 일러스트: 같은 오류도 네 가지 수리 경계가 있습니다. Watch at Ease