为什么package-lock.json会将完整性哈希从sha1更改为sha512?

Mat*_*att 104 npm npm-install package-lock.json

我刚刚生成了一个新的npm lockfile,package-lock.json,作为我典型工作流程的一部分.但是我注意到这次所有的完整性哈希都从sha1改为sha512.这里发生了什么?

在此输入图像描述

小智 88

从我所看到的,npm将完整性校验和从sha1更改为sha512.

如果您的git更改从sha1更改为sha512,那么您应该执行一次更新,之后会更好.

如果其他人使用代码库并看到从sha512到sha1的git更改(这是我遇到的问题),您可以通过运行以下命令来修复它:

丢弃package-lock.json中git的更改

npm i -g npm
rm -rf node_modules/
npm i
Run Code Online (Sandbox Code Playgroud)

这将更新npm并重新安装所有包,以便存在新的校验和(sha512).

  • 在我的情况下,这还不够.除了删除`node_modules`文件夹之外,我还需要`npm cache clear --force`. (17认同)
  • 有理由使用 sha512 而不是 sha1 吗?我的计算机目前是针对我们的环境更改为 sha1 的计算机。 (2认同)

Dan*_*ngs 29

以戴夫的回答为基础.我发现的修复方法是执行以下操作:

npm i -g npm

cd {working directory}
rm -rf node_modules/
rm package-lock.json
npm cache clear --force
npm i
Run Code Online (Sandbox Code Playgroud)

我们同时为所有开发人员做了这个,这停止了sha-512 vs sha-1问题,导致令人沮丧的合并冲突.

  • 您永远不应该删除 package-lock.json 文件。/sf/answers/4354723201/ (2认同)

Iho*_*hor 7

我在一个大团队中工作。强迫每个开发人员强制清理npm缓存是困难且不可靠的。而且,这并不是每次都有帮助。因此,对于仍然面临这个 npm 问题(和我一样)并且没有其他帮助的人 \xe2\x80\x93\xc2\xa0 尝试我最近构建的这个基于 git 的工具: https: //github.com/kopach/锁修复。它恢复sha512 -> sha1npm 锁定文件的完整性更改。如果您将其添加到您的postshrinkwrap脚本中package.json- 您最终应该将所有完整性属性设置为sha512并使锁定文件保持一致。

\n\n
npm install --save-dev lockfix\n
Run Code Online (Sandbox Code Playgroud)\n\n
"scripts": {\n    "postshrinkwrap": "lockfix",\n},\n
Run Code Online (Sandbox Code Playgroud)\n

  • @GeorgeWL,是的,请查看自述文件以了解详细信息 https://github.com/kopach/lockfix#manually-from-terminal (2认同)

mrb*_*wog 6

另请参阅https://github.com/npm/npm/issues/17749,虽然声称该问题是"固定的",但事实并非如此.删除node_modules是一种解决方法.

可能与操作系统有关系.我们现在正在与Linux和Windows平台上的开发人员合作.

  • 自发布以来已经过了几个月,我仍然感到很痛苦.它杀了我 (2认同)
  • 最后我们转移到了纱。 (2认同)
  • 每个 NPM 问题似乎都通过迁移到 Yarn 解决了 (2认同)

Mar*_*cel 6

作为@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
Run Code Online (Sandbox Code Playgroud)