npm install 失败;wanted sha1-xxx but got sha512

534 阅读2分钟

安装依赖是一直报错 integrity checksum failed when using sha1: wanted sha1=xxx but got sha512-a

详尽报错:

npm ERR! code EINTEGRITY
npm ERR! sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=sha512-mZzWRyJeJ0rtK7e1/6iYBUzmeXjzei+1h1IvbedyU0sB52++tU5AU6r6TLXpwNVR0ebXIpvTVW+9CpWNyc1n8w== integrity checksum failed when using sha1: wanted sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=sha512-mZzWRyJeJ0rtK7e1/6iYBUzmeXjzei+1h1IvbedyU0sB52++tU5AU6r6TLXpwNVR0ebXIpvTVW+9CpWNyc1n8w== but got sha512-mZzWRyJeJ0rtK7e1/6iYBUzmeXjzei+1h1IvbedyU0sB52++tU5AU6r6TLXpwNVR0ebXIpvTVW+9CpWNyc1n8w== sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=. (81183 bytes)

翻阅资料后,经过 clean cache 均无效 这篇帖子详尽的列举出了可能的情况

问题是我已经删除了package.json,但是还是不行,不知道这个hash是如何校验的? (问题已定位,因为文件夹下同时也有yarn.lock 文件,把yarn.lock和package-lock.json 都删除,然后清理缓存可解决,npm install的时候,如过没有package-lock.json会安装yarn.lock中的依赖)

此篇文章也详尽的列举出了可能出现的情况

很多资料是want 512=xx get 512 =xx,和笔者遇到的情况不大一样,我的是一个want sha1,get 512 ,怀疑是版本问题,因为是四五年前的项目了

我在尝试了

rm -rf node_modules.
rm package-lock.json
npm cache clean --force  
npm install --verbose

均无效的情况下,怀疑是NPM版本的问题,降级版本得到解决

具体步骤: 以在Mac系统下为例,其实很简单,使用nvm将node 版本降级到8.x可以解决 mac M1上安装Nvm有点问题,此篇

//Rosetta 2 是一个兼容层,它可以在 Apple Silicon Mac 上运行基于 Intel 架构的软件。由于 Apple Silicon Mac 使用了基于 ARM 架构的芯片,在不支持 ARM 架构的软件上运行可能会出现兼容性问题。Rosetta 2 的作用就是允许用户在 Apple Silicon Mac 上无缝地运行这些 Intel 架构的软件。

softwareupdate --install-rosetta

arch -x86_64 zsh

nvm install v8.16.0

nvm use v8.16.0