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


120

作为典型工作流程的一部分,我刚刚生成了一个新的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.community/t/shasum-check-or-integrity-eintegrity-errors/153
凯尔伯克特

Answers:


105

从我可以看到,npm将完整性校验和从sha1更改为sha512。

如果您将git的更改从sha1更改为sha512,则应进行一次更新,此后再做会比较好。

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

放弃git的package-lock.json更改

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
罗伦兹·迈耶

37

以Dave的回答为基础。我发现的解决方法是执行以下操作:

npm i -g npm

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

我们同时为所有开发人员执行了此操作,这消除了导致令人沮丧的合并冲突的sha-512 vs sha-1问题。


6

另请参阅https://github.com/npm/npm/issues/17749,尽管该问题已“解决”,但事实并非如此。删除node_modules是一种解决方法。

可能与操作系统有关。我们现在正在Linux和Windows平台上的开发人员中实现这一目标。


3
自发布以来已经有几个月了,我仍然为此感到痛苦。它是杀了我
乍得·鲁伯特'18

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

1

我在大团队工作。强迫每个开发人员强制执行干净的npm缓存是困难且不可靠的。同样,这并不能每次都有用。因此,对于仍然面临此npm问题(与我一样)并且没有其他帮助的任何人,请尝试使用我最近构建的基于git的工具:https : //github.com/kopach/lockfix。它恢复sha512 -> sha1npm锁定文件的完整性更改。如果将此添加到postshrinkwrap脚本中,package.json则最终应将所有完整性属性设置为sha512并具有一致的锁定文件。

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

0

在以前的意见和建议的基础上,我需要进一步擦除现有的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和其他更改稳定。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.