如何在 Node.js 中修复 npm ERR! code EINTEGRITY

2025年3月1日 | 阅读 3 分钟

有时,在使用 Node.js 和 npm 时,你可能会遇到各种可能严重影响开发流程的错误。npm ERR! code EINTEGRITY 就是一个例子。当 npm 在安装软件包时进行完整性检查失败时,通常会出现此错误。

npm ERR! code EINTEGRITY 错误的根源在于下载的软件包的完整性哈希与其预期哈希不匹配。通过比较此哈希,npm 可以确保软件包未被修改。如果存在差异,npm 将引发 EINTEGRITY 错误以指示潜在问题。

此不匹配的各种原因如下:

  1. 网络问题:在安装软件包时,不稳定的网络连接或连接中断可能导致下载损坏或不完整,从而导致完整性检查失败。
  2. 缓存损坏:npm 在下载软件包时会将它们存储在缓存中。如果缓存损坏并提供了软件包的错误副本,则可能导致完整性故障。
  3. 软件包注册表更改:有时,软件包作者会在不更改版本号的情况下更新软件包。如果发生这种情况,并且软件包的内容与预期不符,则可能导致完整性不匹配。EINTEGRITY 错误表明存在潜在问题。

演示问题

使用以下命令安装一个知名软件包,例如 lodash:

但是,在安装过程中,你可能会收到类似以下的错误通知:

此错误表示 npm 进行的完整性检查失败。更具体地说,下载的 lodash 软件包的完整性哈希(sha512-MKiLiV...)与预期哈希不匹配。

所选目录 (/home/ubuntu/.npm/_logs/...) 包含 npm 的详细日志文件。此日志文件可以通过提供有关问题所在位置的更多详细信息来帮助进一步的故障排除。

清除 npm 缓存

已下载的软件包保存在 npm 缓存中,这可以加快安装过程。然而,完整性错误,如 EINTEGRITY,有时是由于此缓存损坏而引起的。清除 npm 缓存通常可以修复这些问题。

可以使用以下命令清空 npm 缓存:

清除缓存后,尝试重新安装软件包。

重新安装软件包

如果清除 npm 缓存不能解决问题,下一步是直接重新安装软件包。这涉及卸载现有软件包,然后重新安装,以确保干净的安装。

首先,卸载软件包:

然后,重新安装它:

此过程可确保下载并安装软件包的新副本,并有助于解决当前安装中的任何问题。

将 npm 更新到最新版本

确保你使用的是最新版本的 npm 非常重要,因为更新通常会提供错误修复和其他改进,可以解决 EINTEGRITY 等问题。要确保 npm 是最新的,请运行:

更新 npm 后,请尝试再次安装软件包。

删除 package-lock.json 和 node_modules

如果问题仍然存在,你可能需要采取更全面的方法,删除 package-lock.json 文件和 node_modules 目录。这可以解决更严重的软件包依赖问题。

首先删除 package-lock.json 文件和 node_modules 目录。然后,通过运行以下命令重新安装所有依赖项:

验证 npm 注册表完整性

不稳定的或配置不正确的 npm 注册表有时可能是完整性问题的根源。要确保你使用的是可靠的注册表,可以切换到官方 npm 注册表:

设置好注册表后,尝试重新安装软件包。

注意:在这些示例中,我们使用了 lodash 软件包来演示错误及其修复方法。但是,这些故障排除步骤可以应用于遇到类似问题的任何 npm 软件包。

尽管 npm ERR! code EINTEGRITY 错误可能很烦人,但通常可以通过有条理的方法来解决。通过清除 npm 缓存、重新安装软件包、更新 npm 和检查 npm 注册表,你可以解决此错误并恢复开发工作。定期更新 npm 和保持干净的缓存也有助于防止将来出现此类问题。