Właśnie wygenerowałem nowy plik blokujący npm, package-lock.json, jako część mojego typowego przepływu pracy. Ale zauważyłem, że tym razem wszystkie skróty integralności zostały zmienione z sha1 na sha512. Co tu się dzieje?
"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==",
[…]
}
Odpowiedzi:
Z tego co widzę, npm zmienił sumę kontrolną integralności z sha1 na sha512.
Jeśli twoje zmiany git przechodzą z sha1 do sha512, powinieneś zrobić tę aktualizację raz, a potem będzie dobrze.
Jeśli ktoś inny pracuje z bazą kodu i widzi zmianę gita z sha512 na sha1 (co jest problemem, który miałem), możesz to naprawić, uruchamiając następujące polecenie:
Odrzuć zmiany w git dla package-lock.json
Spowoduje to zaktualizowanie npm i ponowne zainstalowanie wszystkich pakietów, tak aby była obecna nowa suma kontrolna (sha512).
źródło
node_modules
folderu potrzebowałemnpm cache clear --force
też.Opierając się na tym, co odpowiedział Dave. Znaleziona przeze mnie poprawka polegała na wykonaniu następujących czynności:
Zrobiliśmy to dla wszystkich naszych programistów w tym samym czasie i to zatrzymało problem sha-512 vs sha-1, który powodował frustrujące konflikty przy scalaniu.
źródło
Zobacz też https://github.com/npm/npm/issues/17749, który chociaż twierdzi, że problem został „naprawiony”, tak nie jest. Usunięcie
node_modules
jest obejściem.Może istnieć związek z systemami operacyjnymi. Robimy to teraz z programistami na platformach Linux i Windows.
źródło
Jako @Daniel Cumings musiałem również usunąć,
package-lock.json
aby pozbyć się skrótów sha1. Oto polecenia interfejsu wiersza polecenia systemu Windows w celach informacyjnych, które działają tak samo, jak skrypt Daniela:źródło
Pracuję w dużym zespole. Zmuszanie każdego programisty do wymuszania czyszczenia
npm
pamięci podręcznej jest trudne i zawodne. Poza tym to nie pomaga za każdym razem. Tak więc, dla każdego, kto nadal boryka się z tym problemem npm (tak samo jak ja) i nic innego nie pomaga - wypróbuj to narzędzie oparte na git, które niedawno zbudowałem: https://github.com/kopach/lockfix . Przywracasha512 -> sha1
zmiany integralności plików blokujących npm. Jeśli dodasz to do swojegopostshrinkwrap
skryptupackage.json
- powinieneś ostatecznie ustawić wszystkie właściwości integralnościsha512
i mieć spójny plik blokady.źródło
Kontynuując opierając się na poprzednich komentarzach i sugestiach, musiałem wyczyścić istniejący folder node_modules, pamięć podręczną, a następnie pobrać plik sha512 package-lock.json z git (który został zatwierdzony z innego komputera) i na koniec wykonać npm i . Coś takiego:
Po tym pakiecie lock.json użył sha512 i inne zmiany ustabilizowały się.
źródło