Package-lock.json neden bütünlük karmasını sha1'den sha512'ye değiştirdi?


121

Tipik iş akışımın bir parçası olarak yeni bir npm kilit dosyası oluşturdum, package-lock.json. Ancak bu sefer tüm bütünlük karmalarının sha1'den sha512'ye değiştirildiğini fark ettim. Burada ne oluyor?

görüntü açıklamasını buraya girin

"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
Bu npm ile ilgili bir sorun: github.com/npm/npm/issues/17749
Vlad Minaev

1
Yukarıda atıfta bulunulan sorun kapatıldı ve şimdi bu sorunun nasıl çözüleceğini açıklayan bir makale oluşturuldu: npm.community/t/shasum-check-or-integrity-eintegrity-errors/153
Kyle Burkett

Yanıtlar:


106

Gördüğüm kadarıyla, npm bütünlük sağlama toplamını sha1'den sha512'ye değiştirdi.

Git değişiklikleriniz sha1'den sha512'ye gidiyorsa, bu güncellemeyi bir kez yapmalısınız ve bundan sonra iyi olacaktır.

Kod tabanıyla çalışan başka biri, sha512'den sha1'e (benim yaşadığım sorun bu) bir git değişikliği görürse, aşağıdakileri çalıştırarak düzeltebilirsiniz:

Package-lock.json için git'teki değişiklikleri atın

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

Bu, npm'yi güncelleyecek ve tüm paketlerinizi yeni sağlama toplamı (sha512) olacak şekilde yeniden yükleyecektir.


1
Sha1 yerine sha512 kullanmak için bir neden var mı? Bilgisayarım şu anda çevremiz için sha1 olarak değişen bilgisayar.
Elijah1210

@ Elijah1210 Bir çarpışma ile hash 'taklit etme' olasılığının daha az olduğunu tahmin edeceğim?
Pureferret

20
Bu benim durumumda yeterli değildi. node_modulesKlasörü silmeye ek olarak , benim de ihtiyacım npm cache clear --forcevardı.
Lorenz Meyer

37

Dave'in yanıtladığı şeye dayanarak. Bulduğum düzeltme aşağıdakileri yapmaktı:

npm i -g npm

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

Bunu tüm geliştiricilerimiz için aynı anda yaptık ve bu, sinir bozucu birleştirme çatışmalarına neden olan sha-512 vs sha-1 sorununu durdurdu.


6

Ayrıca bkz. Https://github.com/npm/npm/issues/17749 , sorunun 'düzeltildiğini' iddia etse de, değil. Kaldırma node_modules, geçici bir çözümdür.

İşletim sistemleriyle bir ilişki olabilir. Şu anda Linux ve Windows platformlarındaki geliştiricilerle buna ulaşıyoruz.


3
Bunun yayınlanmasının üzerinden aylar geçti ve hala bundan muzdaripim. ÖLDÜRÜYOR BENİ
Chad Ruppert

2
Sonunda ipliğe geçtik.

1
Görünüşe göre her NPM problemi
Yarn'a

2

@Daniel Cumings package-lock.jsonolarak sha1 hash'lerinden kurtulmak için de kaldırmak zorunda kaldım . Daniel'in komut dosyasıyla aynı şeyi yapan referans için Windows CLI komutları :

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

2

Ben büyük bir takımda çalışıyorum. Her geliştiriciyi temiz npmönbelleği zorlamaya zorlamak zordur ve güvenilir değildir. Ayrıca, bu her seferinde yardımcı olmuyor. Bu nedenle, hala bu npm sorunuyla karşı karşıya olan herkes için (benimle aynı) ve başka hiçbir şey yardımcı olmuyor - yakın zamanda oluşturduğum bu git tabanlı aracı deneyin: https://github.com/kopach/lockfix . sha512 -> sha1Npm'nin kilit dosyalarının bütünlük değişikliklerini geri döndürür . Bunu postshrinkwrapkomut dosyanıza eklerseniz package.json- sonunda tüm bütünlük özelliklerini olarak ayarlamalı sha512ve kilit dosyasını tutarlı hale getirmelisiniz .

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

0

Önceki yorum ve önerilere dayanarak, benim için mevcut node_modules klasörünü, önbelleği silmem ve git'ten sha512 package-lock.json dosyasını (başka bir bilgisayardan işlendi) almam ve sonunda bir npm i yapmam gerekiyordu. . Bunun gibi bir şey:

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

Bu paket-lock.json'dan sonra sha512 kullanıldı ve diğer değişiklikler dengelendi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.