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文件的校验和与在package-lock.json文件中找到的校验和进行比较。

        当文件和package-lock.json文件EINTEGRITY之间的校验和值不匹配时,就会发生如上所示的错误。

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

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

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

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

        1. 删除package-lock.json文件:删除该package-lock.json文件,并在安装完成后让npm生成一个新文件

        2.更新package-lock.jso文件中列出的完整性值:搜索并替换文件中错误消息中的值,将想要的值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.mzph.cn/diannao/84034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android13 wifi设置国家码详解

Android13 wifi设置国家码详解 文章目录 Android13 wifi设置国家码详解一、前言二、设置wifi国家码相关代码1、adb或者串口也能设置和获取当前国家码(1)查询命令的方式(2)获取和设置国家码的示例 2、Java代码设置国家码3、获取当前…

c/c++的opencv高斯模糊

深入探索图像高斯模糊:原理、C/C实现与OpenCV应用 在图像处理的众多技术中,模糊(或平滑)是最为基础且不可或缺的一环。它广泛应用于降噪、图像预处理、特征提取前的平滑以及计算机图形学中的各种视觉效果。在高斯模糊&#xff08…

Java求职者面试:从Spring Boot到微服务的技术点解析

Java求职者面试:从Spring Boot到微服务的技术点解析 场景:互联网医疗-预约挂号系统 面试官: “小明,我们今天的场景是一个互联网医疗的预约挂号系统。我们需要支持高并发的用户预约操作,同时保证数据一致性和系统的高…

专业 YouTube SEO 方案:打造高排名视频的关键步骤

YouTube 是全球订阅量最高的社交媒体平台之一。YouTube 为发布创意视频内容和针对特定受众开展营销活动提供了无限可能,是任何品牌内容营销策略的重要组成部分。 但是,为了发展您的 YouTube 频道并消除噪音,优化您的视频内容以便可以在搜索结…

Java Collection(集合) 接口

Date: 2025-05-21 20:21:32 author: lijianzhan Java 集合框架提供了一组接口和类,以实现各种数据结构和算法。 以下是关于 Java 集合的核心内容说明: /*** Java Collection Framework 说明:** 在 Java 中,集合(Collec…

如何用ipmitool修改FRU信息?

如何用ipmitool修改FRU信息? FRU(Field Replaceable Unit,现场可更换单元)记录了服务器硬件的关键信息,如序列号、制造商、型号等。通过ipmitool修改FRU信息,常用于硬件维护、资产标签更新或调试场景。以下…

uniapp vue 开发微信小程序 分包梳理经验总结

嗨,我是小路。今天主要和大家分享的主题是“uniapp vue 开发微信小程序 分包梳理经验总结”。 在使用 UniAppvue框架开发微信小程序时,当项目比较大的时候,经常需要分包加载。它有助于控制主包的大小,从而提升小程序的启…

git合并多次commit提交

首先查看历史记录 git log 查看你想要合并的commit是哪些(注意:这里是逆序,最上的是最新提交) 找到当前想要合并的最后一个记录,复制该记录的下一个记录的 id(黄色部分commit id)&#xff0c…

系统架构设计(七):数据流图

定义 数据流图(Data Flow Diagram, DFD)是一种用于表示信息系统数据流转及处理过程的图形工具。 它反映系统功能及数据之间的关系,是结构化分析与设计的重要工具。 主要符号 符号说明描述举例方框外部实体(源或终点&#xff09…

MAUI与XAML交互:构建跨平台应用的关键技巧

文章目录 引言1. 代码隐藏文件关联1.1 XAML文件与代码隐藏文件的关系1.2 部分类机制1.3 InitializeComponent方法1.4 XAML命名空间映射 2. 元素名称与x:Name属性2.1 x:Name属性的作用2.2 命名规则与最佳实践2.3 x:Name与x:Reference的区别2.4 编译过程中的名称处理 3. 在代码中…

php://filter的trick

php://filter流最常见的用法就是文件包含读取文件,但是它不止可以用来读取文件,还可以和RCE,XXE,反序列化等进行组合利用 filter协议介绍 php://filter是php独有的一种协议,它是一种过滤器,可以作为一个中…

微信小程序开发中,请求数据列表,第一次请求10条,滑动到最低自动再请求10条,后面请求的10条怎么加到第一次请求的10条后面?

在微信小程序中实现分页加载数据列表,可通过以下步骤将后续请求的10条数据追加到首次加载的数据之后: 实现步骤及代码示例 定义页面数据与参数 在页面的 data 中初始化存储列表、页码、加载状态及是否有更多数据的标识: Page({data: {list…

如何利用 Java 爬虫根据 ID 获取某手商品详情:实战指南

在电商领域,获取商品详情数据对于市场分析、选品上架、库存管理和价格策略制定等方面具有重要价值。某手作为国内知名的电商平台,提供了丰富的商品资源。通过 Java 爬虫技术,我们可以高效地根据商品 ID 获取某手商品的详细信息。本文将详细介…

电平匹配电路

1、为什么要电平匹配? 现在很多SOC器件为了降低功耗,都把IO口的电平设计成了1.8V,核电压0.85V,当这种SOC做主平台时,在做接口设计需要格外关注电平的匹配。单板中经常需要将1.8V的电平转换成3.3V或者转成5V。如果没有注意到输入和输出信号之间的电平匹配,系统就无法正常…

【技术揭秘】Profinet转RS485如何优化冲剪机的实时通信性能?​​

在现代工业自动化领域,通信协议是连接不同设备和系统的关键。RS485和Profinet是两种广泛使用的工业通信标准,它们各自拥有独特的特性和应用场景。本文将探讨如何通过一个小疆智控Profinet转RS485网关来优化冲剪机的应用,提高生产线的效率和可…

面经总目录——持续更新中

说明 本面经总结了校招时我面试各个公司的面试题目,每场面试后我都及时进行了总结,同时后期补充扩展了同类型的相近面试题,校招时从两个方向进行投递,视觉算法工程师和软件开发工程师(C方向),所…

AI前端页面生成:deepsite、Qwen Web Dev

deepsite网页生成 https://huggingface.co/spaces/enzostvs/deepsite 落地页美观不错,默认用tailwindcss实现样式 提示词: AI 功能是核心,通过后端 server.js 实现。server.js 使用 Express 框架,依赖 @huggingface/inference 库与 Hugging Face 推理 API 交互,具体使用…

华为云鲲鹏型kC2云服务器——鲲鹏920芯片性能测评

华为云鲲鹏型kC2云服务器性能怎么样?性能很不错,鲲鹏通用计算增强型kC2实例是ARM架构的云服务器,CPU采用Huawei Kunpeng 920 2.9GHz主频,每个vCPU对应一个底层物理内核。华为云服务器网hwyfwq.com整理鲲鹏型kC2云服务器性能测评及…

Java 安全SPEL 表达式SSTI 模版注入XXEJDBCMyBatis 注入

https://github.com/bewhale/JavaSec https://github.com/j3ers3/Hello-Java-Sec https://mp.weixin.qq.com/s/ZO4tpz9ys6kCIryNhA5nYw #Java 安全 -SQL 注入 -JDBC&MyBatis -JDBC 1 、采用 Statement 方法拼接 SQL 语句 2 、 PrepareStatement 会对 SQL 语…

【VxWorks 实时操作系统(RTOS)】常用函数汇总

VxWorks 实时操作系统(RTOS)中的核心函数 1. taskSpawn 函数 功能:用于动态创建并激活一个新任务(线程)。参数解析(以 VxWorks 为例):int taskSpawn(char *name, // 任务名…