web-dev-qa-db-ja.com

package-lock.jsonが整合性ハッシュをsha1からsha512に変更したのはなぜですか?

私は典型的なワークフローの一部として新しいnpmロックファイルpackage-lock.jsonを生成しました。しかし、今回はすべての整合性ハッシュがsha1からsha512に変更されたことに気付きました。ここで何が起きてるの?

enter image description here

85
Matt

私が見ることができるものから、npmはsha1からsha512へ完全性チェックサムを変更しました。

もしあなたのgitの変更がsha1からsha512へと進んでいるのであれば、あなたはその更新を一度行うべきで、それはその後うまくいくでしょう。

他の誰かがコードベースを使っていて、gitがsha512からsha1に変わったのを見た場合(私が抱えていた問題です)、以下を実行することでそれを修正できます。

Package-lock.jsonのgitの変更を破棄します

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

これにより、npmが更新され、すべてのパッケージが再インストールされ、新しいチェックサム(sha512)が表示されます。

68
Dave

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問題を止めました。

24
Daniel Cumings

https://github.com/npm/npm/issues/17749 も参照してください。問題は「解決された」と主張していますが、そうではありません。 node_modulesを削除することは回避策です。

オペレーティングシステムと関係がある可能性があります。私たちは今、LinuxとWindowsプラットフォームの開発者たちと一緒にこれを打っています。

6
mrblewog

以前のコメントや提案をさらに詳しく説明するために、私は既存のnode_modulesフォルダー、キャッシュを消去してから、(別のコンピューターからコミットされた)gitからsha512 package-lock.jsonファイルを取得し、最後にnpmを実行する必要がありました。 。このようなもの:

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

この後package-lock.jsonはsha512を使用し、他の変更は安定しました。

0
Mike Benna