为什么运行纱线命令会给出错误 - “yargs-parser”的完整性检查失败

Neh*_*oni 5 installation node.js npm vue.js yarnpkg

问题-

在我现有的 Vue 项目中,如果我运行yarn installoryarn add package_name命令,则会发生以下错误 -

在此输入图像描述

在此输入图像描述

我读到的——

阅读本文后(向下滚动到“完整性哈希”部分),我能够对这个错误有了一些了解:

纱线将根据下载的内容计算每个依赖项安装的哈希值。下次下载该依赖项时,yarn 会再次生成哈希值。如果新值与yarn.lock中存储的值不匹配,yarn将抛出如下错误Integrity check failed for <package-name> (computed integrity doesn't match our records, got <integrity-hash-value>:)

我相信我的错误是相关的。本文还建议的解决方案是阅读有关罪魁祸首的依赖项,如果可以安全使用,请重新安装它。我也读过这个GitHub 问题

我的顾虑-

据我所知,一旦指定了已解析的版本,yarn.lock每当您运行yarn install. 在我的yarn.lock版本中yargs-parser20.2.1.

我应该重新安装这个yargs-parser依赖项吗?如果是,那么如何?我有点担心重新安装对其他依赖项的影响。

我的环境详细信息-

以下包管理器在我的系统中全局安装 -

node- 14.19.0
yarn- 1.22.4
npm- 6.14.16
Run Code Online (Sandbox Code Playgroud)

如果需要,我可以提供更多详细信息。任何帮助都会很好。

Neh*_*oni 4

于是,经过几天的研究,终于解决了这个问题。

导致此错误的原因-

正如我在关于我怀疑诚信不匹配的问题中引用的那样,是正确的。

完整性校验和是 Yarn 使用的一项安全功能,用于确保包的内容自发布到注册表以来未被篡改。因此,当您安装软件包时,Yarn 会从注册表下载软件包的 tarball,并验证完整性校验和是否与文件中列出的相符yarn.lock

就我而言,哈希值以某种方式不匹配,这就是实际原因。

我测试过的-

  1. 清除纱线缓存。(非常基本,但没用)
  2. 删除了yarn.lock又安装了。(非常具有破坏性的结果,因为当您确实只是对单个包有问题时,它可能会更新所有包。)
  3. 想过只重新安装这个yargs-parser包,但这是不可能的,因为它没有添加到package.json文件中。:-(

真正解决问题的是什么

英雄命令——

yarn --update-checksums
Run Code Online (Sandbox Code Playgroud)

这个命令有什么作用?

如果任何包的完整性校验和已过期或不正确,则运行此命令将根据注册表的当前内容重新生成它们。

所以这个命令纠正了我的包的哈希值yargs-parser,现在我可以完美地使用yarn命令了。

我对这个概念的任何其他想法持开放态度。