package-lock.json이 무결성 해시를 sha1에서 sha512로 변경 한 이유는 무엇입니까?


121

일반적인 워크 플로의 일부로 새 npm 잠금 파일 인 package-lock.json을 생성했습니다. 그러나 이번에는 모든 무결성 해시가 sha1에서 sha512로 변경되었음을 알았습니다. 여기서 무슨 일이 일어나고 있습니까?

여기에 이미지 설명 입력

"chalk": {
    "version": "2.0.1",
    "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz",
-   "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=",
+   "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
    […]
}

1
npm의 문제입니다 : github.com/npm/npm/issues/17749
Vlad Minaev

1
위에서 언급 한 문제는 폐쇄되었으며 이제 문서는이 문제를 해결하는 방법을 지시하는 생성됩니다 npm.community/t/shasum-check-or-integrity-eintegrity-errors/153
카일 버켓

답변:


105

내가 볼 수 있듯이 npm은 무결성 체크섬을 sha1에서 sha512로 변경했습니다.

git 변경이 sha1에서 sha512로 진행되는 경우 해당 업데이트를 한 번 수행해야하며 그 후에는 괜찮을 것입니다.

다른 사람이 코드베이스로 작업하고 sha512에서 sha1 (내가 겪고 있던 문제)으로 git 변경을 본다면 다음을 실행하여 수정할 수 있습니다.

package-lock.json에 대한 git의 변경 사항을 무시하십시오.

npm i -g npm
rm -rf node_modules/
npm i

그러면 npm이 업데이트되고 새 체크섬 (sha512)이 존재하도록 모든 패키지가 다시 설치됩니다.


1
sha1보다 sha512를 사용하는 이유가 있습니까? 내 컴퓨터는 현재 환경을 위해 sha1로 변경되는 컴퓨터입니다.
Elijah1210

@ Elijah1210 충돌로 해시를 '위조'할 가능성이 적을까요?
Pureferret

20
제 경우에는 이것으로 충분하지 않았습니다. node_modules폴더 를 삭제하는 것 외에도 필요 npm cache clear --force했습니다.
Lorenz Meyer

37

Dave가 대답 한 것을 기반으로합니다. 내가 찾은 수정 사항은 다음을 수행하는 것입니다.

npm i -g npm

cd {working directory}
rm -rf node_modules/
rm package-lock.json
npm cache clear --force
npm i

우리는 모든 개발자를 위해 동시에이 작업을 수행했으며 이로 인해 병합 충돌을 일으키는 sha-512 대 sha-1 문제가 중지되었습니다.


6

https://github.com/npm/npm/issues/17749참조 하십시오 . 문제가 '수정'되었다고 주장하지만 그렇지 않습니다. 제거 node_modules는 해결 방법입니다.

운영 체제와 관계가있을 수 있습니다. 우리는 지금 Linux 및 Windows 플랫폼의 개발자들과 함께이 문제를 해결하고 있습니다.


3
이것이 게시 된 지 몇 달이 지났고 나는 여전히 이것으로 고통 받고 있습니다. 그것은 나를 죽이고
차드 루퍼트

2
우리는 결국 실로 옮겼습니다.

1
겉으로 원사로 이동하여 해결 모든 NPM 문제
Solvitieg

2

@Daniel Cumings로서 package-lock.jsonsha1 해시 를 제거 하기 위해를 제거해야했습니다. 다음 은 Daniel의 스크립트와 동일한 작업을 수행하는 참조 용 Windows CLI 명령 입니다.

npm i -g npm
rd /s /q "node_modules"
del package-lock.json
npm cache clear --force
npm i

2

저는 큰 팀에서 일하고 있습니다. 모든 개발자가 npm캐시를 정리하도록 강제하는 것은 어렵고 신뢰할 수 없습니다. 또한 이것은 매번 도움이되지 않습니다. 따라서 여전히이 npm 문제 (나와 동일)에 직면하고 있고 다른 도움이되지 않는 사람을 위해 최근에 구축 한이 git 기반 도구를 사용해보십시오 : https://github.com/kopach/lockfix . sha512 -> sha1npm 잠금 파일의 무결성 변경을 되돌 립니다. 이것을 postshrinkwrap스크립트에 추가하면 package.json결국 모든 무결성 속성이로 설정되고 sha512잠금 파일이 일치해야합니다.

npm install --save-dev lockfix
"scripts": {
    "postshrinkwrap": "lockfix",
},

0

이전 의견과 제안을 추가로 구축하여 기존 node_modules 폴더, 캐시를 지운 다음 git (다른 컴퓨터에서 커밋 된)에서 sha512 package-lock.json 파일을 가져 와서 마지막으로 npm i를 수행해야했습니다. . 이 같은:

npm i -g npm
rm -rf node_modules/
npm cache clear --force
git reset --hard
npm i

이 package-lock.json이 sha512를 사용하고 다른 변경 사항이 안정화 된 후.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.