答案 0 :(得分:64)
从我所看到的,npm将完整性校验和从sha1更改为sha512。
如果您的git更改从sha1更改为sha512,那么您应该进行一次更新,之后会更好。
如果其他人使用代码库并看到从sha512到sha1的git更改(这是我遇到的问题),您可以通过运行以下命令来修复它:
放弃针对package-lock.json的git中的更改
return http.post('/auth/silentCall', {user: 123}).subscribe(
这将更新npm并重新安装所有软件包,以便存在新的校验和(sha512)。
答案 1 :(得分:22)
以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问题。
答案 2 :(得分:6)
另请参阅https://github.com/npm/npm/issues/17749虽然声称该问题已得到修复,但它并非如此。删除node_modules
是一种解决方法。
可能与操作系统有关系。我们现在正在与Linux和Windows平台上的开发人员合作。
答案 3 :(得分:2)
我正在大团队中工作。强制每个开发人员强制执行干净的npm
缓存是困难且不可靠的。同样,这并不能每次都有用。因此,对于仍然面临这个npm问题(与我一样)并且没有其他帮助的任何人-尝试使用我最近构建的基于git的工具:https://github.com/kopach/lockfix。它恢复npm的锁定文件的sha512 -> sha1
完整性更改。如果将其添加到postshrinkwrap
的{{1}}脚本中-最终应将所有完整性属性设置为package.json
并具有一致的锁定文件。
sha512
npm install --save-dev lockfix
答案 4 :(得分: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和其他更改稳定后。
答案 5 :(得分:0)
在我的情况下,npm -g i npm
还不够,我不得不修改PATH以在开始时指向新的npm。
要对其进行未经修改的检查,请尝试使用/usr/local/bin/npm i
而不是npm i
。