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).
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问题,导致令人沮丧的合并冲突.
我在一个大团队中工作。强迫每个开发人员强制清理npm缓存是困难且不可靠的。而且,这并不是每次都有帮助。因此,对于仍然面临这个 npm 问题(和我一样)并且没有其他帮助的人 \xe2\x80\x93\xc2\xa0 尝试我最近构建的这个基于 git 的工具: https: //github.com/kopach/锁修复。它恢复sha512 -> sha1npm 锁定文件的完整性更改。如果您将其添加到您的postshrinkwrap脚本中package.json- 您最终应该将所有完整性属性设置为sha512并使锁定文件保持一致。
npm install --save-dev lockfix\nRun Code Online (Sandbox Code Playgroud)\n\n"scripts": {\n "postshrinkwrap": "lockfix",\n},\nRun Code Online (Sandbox Code Playgroud)\n
另请参阅https://github.com/npm/npm/issues/17749,虽然声称该问题是"固定的",但事实并非如此.删除node_modules是一种解决方法.
可能与操作系统有关系.我们现在正在与Linux和Windows平台上的开发人员合作.
作为@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)
| 归档时间: |
|
| 查看次数: |
25977 次 |
| 最近记录: |