当前位置: 首页 > news >正文

CICD遇到npm error code EINTEGRITY的问题

场景

        CICD编译时抛出npm error code EINTEGRITY的错误

npm error code EINTEGRITY
npm error sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== integrity checksum failed when using sha512: wanted sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== but got sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==. (318961 bytes)
npm error A complete log of this run can be found in: /root/.npm/_logs/2025-05-21T01_30_13_824Z-debug-0.log

解决

# 删除 node_modules and package-lock.json
rm -rf node_modules package-lock.json# 清理和验证 npm cache
npm cache clean --force
npm cache verify# 重新安装
npm install

分析

        运行npm install命令时,您可能会看到进程失败并显示EINTEGRITY错误代码。

        这是错误的示例输出:        

npm ERR! code EINTEGRITY
npm ERR! sha512-vjA...Azq==
integrity checksum failed when using sha512:wanted sha512-vjA...Azq==but got sha512-MjAA...LNsqvg==. (161379 bytes)npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/nsebhastian/.npm/_logs/2022-06-16T10_04_42_791Z-debug.log

        当您运行该npm install命令时,npm将查找在您的package.json文件中列为依赖项的包以进行下载和安装。

           package-lock.json当目录中有文件时,npm会将下载的tarball.tgz文件的校验和与在锁定文件中找到的校验和进行比较。

        当文件和锁定文件EINTEGRITY之间的校验和值不匹配时,就会发生如上所示的错误。

   .tgz在错误消息中,您可以看到npm说想要sha512……但得到的是sha512……

   wanted...中的值是在package-lock.json文件中找到的值。

        但是got...npmtarball文件生成校验和时得到的值。

        有两种方法可以解决此错误:

  • 删除package-lock.json文件
  • 更新文件中列出的完整性值package-lock.json

        要轻松修复错误,您可以删除该package-lock.json文件,并在安装完成后让npm生成一个新文件。

        或者如果你想保留package-lock.json文件,那么你需要替换integrity正确包中的值。

        为此,请搜索并替换文件中错误消息中的值package-lock.json

        在上述情况下,将想要的值sha512-vjA... 替换为sha512-MjAA...

        当然,当你有很多EINTEGRITY错误时,这会很烦人。删除package-lock.json文件会更容易,因为npm无论如何都会生成一个新文件。

        如果上述方法不起作用,请按照以下步骤清除节点模块和npm缓存文件夹:

# remove node_modules and package-lock.json
rm -rf node_modules package-lock.json# Clear and verify npm cache
npm cache clean --force
npm cache verify# now run npm install again
npm install

校验和值

        校验和值是从特定文件生成的字母数字哈希值。

        当文件内容改变时,校验和值也会改变。

        在npm包中,校验和用于验证您下载的文件的完整性。

        第一次将包安装为依赖项时,npm将生成每个包的校验和并将其存储在文件中package-lock.json

下面是一个例子:

{"@babel/code-frame": {"version": "7.16.7","resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz","integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==","requires": {"@babel/highlight": "^7.16.7"}}
}

   integrity上面依赖关系图中的属性是通过对文件运行哈希sha512函数生成的.tgz

        在上述情况下,code-frame-7.16.7.tgz文件。

   npm install以后运行时,npm会再次对该code-frame-7.16.7.tgz文件运行哈希函数,看校验和是否与属性中的一致integrity

        当值不同时,npm将抛出EINTEGRITY错误代码。

        这就是删除package-lock.json文件有效的原因。npm将跳过包的校验和比较过程(直到您下次npm install再次运行)

        在npm版本5之前,校验和是用sha1而不是生成的sha512

        有时,npm也会EINTEGRITY因为不同的sha哈希值而产生警告,如下所示:

npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning EINTEGRITY: sha1-UWbihk...TIIM= 
integrity checksum failed when using sha1: 
wanted sha1-UWbihk...TIIM= but got sha512-yJHVQEh...pWft6kWBBcqh0UA==. (11423 bytes)

        这意味着您的锁定文件中有sha1值,但npm生成sha512值。

        同样,您需要删除node_modules文件夹和package-lock.json文件才能解决警告。

        如果您使用的是旧版本的npm,请在再次尝试安装之前升级您的npm版本:

# upgrade npm version
npm install -g npm@latest# remove node_modules and package-lock.json
rm -rf node_modules package-lock.json# Clear and verify npm cache
npm cache clean --force
npm cache verify# now run npm install again
npm install

        依次运行上述命令以解决错误EINTEGRITY

http://www.xdnf.cn/news/565291.html

相关文章:

  • Ntfs!ATTRIBUTE_RECORD_HEADER结构$INDEX_ROOT=0x90的一个例子
  • SQL语句-常用版
  • Python学习——执行python时,键盘按下ctrl+c,退出程序
  • 系分论文《论软件系统安全分析和应用》
  • 如何使用deepseek帮助自己的工作
  • Dynamics 365 Business Central Azure application registration
  • 【泛微系统】后端开发Action常用方法
  • 新浪、京东golang一面整理
  • 大模型微调与高效训练
  • 网络安全-等级保护(等保) 2-0 等级保护制度现行技术标准
  • Debian重装系统后
  • JS进阶学习04
  • 红蓝对抗中的网络安全设备操作手册
  • 算法竞赛板子
  • 强化学习鱼书(7)——神经网络和Q学习
  • 探究国际数字影像产业园人才培育高地的建设成效​
  • vue3+uniapp中使用高德地图实现撒点效果
  • Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中
  • 双检锁(Double-Checked Locking)单例模式
  • Axure应用交互设计:动态面板嵌套实现超强体验感菜单表头
  • Jenkins (七) - Docker Harbor
  • DeepSeek赋能智能家居:构建高智能、低延迟的物联网生态
  • 使用Starrocks制作拉链表
  • Typescript总结篇——配置TS、基础知识(类型、接口、类型别名、泛型、extendsinfer关键字)
  • OOP和软件设计中的五大核心设计原则——SOLID原则
  • 8.2 线性变换的矩阵
  • Isaac Sim及Isaac Lab的安装与部署
  • 结构体对齐规则与优化
  • openlayer:07点击实现切换图层之addLayer
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.8)