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
Kyle Burkett

回答:


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

デイブの答えに基づいて。私が見つけた修正は次のことをすることでした:

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.json、sha1ハッシュを取り除くためにも削除する必要がありました。参照用のWindows CLIコマンドを次に示します。これは、Danielのスクリプトと同じです。

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/lockfixsha512 -> 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

このパッケージの後で、lock.jsonはsha512を使用し、その他の変更は安定しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.