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

CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/

1、背景:

在维护paas云平台过程中,有研发反馈paas云平台上的CI/CD的前端流水线执行异常。

2、问题描述:

流水线执行的是前端编译,使用的是node.js环境。报错内容如下:

2024-07-18T01:23:04.203585287Z npm ERR! code ECONNRESET
2024-07-18T01:23:04.203727300Z npm ERR! errno ECONNRESET
2024-07-18T01:23:04.210147708Z npm ERR! network request to https://registry.npmjs.org/@vue%2fcli-plugin-router failed, reason: read ECONNRESET
2024-07-18T01:23:04.210195959Z npm ERR! network This is a problem related to network connectivity.
2024-07-18T01:23:04.210209224Z npm ERR! network In most cases you are behind a proxy or have bad network settings.
2024-07-18T01:23:04.210226834Z npm ERR! network 
2024-07-18T01:23:04.210338075Z npm ERR! network If you are behind a proxy, please make sure that the
2024-07-18T01:23:04.210441692Z npm ERR! network 'proxy' config is set properly.  See: 'npm help config'
2024-07-18T01:23:04.232363448Z 
2024-07-18T01:23:04.232608727Z npm ERR! A complete log of this run can be found in:
2024-07-18T01:23:04.232720416Z npm ERR!     /root/.npm/_logs/2024-07-18T01_23_04_228Z-debug.log
2024-07-18T01:23:04.479748876Z 
2024-07-18T01:23:04.479882604Z > iot-platform-ui@0.0.1 build:test /app
2024-07-18T01:23:04.479934398Z > vue-cli-service build --mode test
2024-07-18T01:23:04.479958583Z 
2024-07-18T01:23:04.483348655Z sh: vue-cli-service: not found
2024-07-18T01:23:04.488652326Z npm ERR! code ELIFECYCLE
2024-07-18T01:23:04.488758492Z npm ERR! syscall spawn
2024-07-18T01:23:04.488835196Z npm ERR! file sh
2024-07-18T01:23:04.488841198Z npm ERR! errno ENOENT
2024-07-18T01:23:04.490957465Z npm ERR! iot-platform-ui@0.0.1 build:test: `vue-cli-service build --mode test`
2024-07-18T01:23:04.490990241Z npm ERR! spawn ENOENT
2024-07-18T01:23:04.490995027Z npm ERR! 
2024-07-18T01:23:04.490998423Z npm ERR! Failed at the iot-platform-ui@0.0.1 build:test script.
2024-07-18T01:23:04.491001883Z npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2024-07-18T01:23:04.492843295Z npm WARN Local package.json exists, but node_modules missing, did you mean to install?
2024-07-18T01:23:04.493174176Z 
2024-07-18T01:23:04.493206554Z npm ERR! A complete log of this run can be found in:
2024-07-18T01:23:04.493219813Z npm ERR!     /root/.npm/_logs/2024-07-18T01_23_04_491Z-debug.log

node.js编译的脚本配置如下: 

#!/bin/sh
# CMD 脚本执行的工作目录为 pipeline 基础镜像的文件系统目录,包含 clone 的代码
rm -rf /app/pkg/*
npm config set https://registry.npmmirror.com/

npm install
npm run build:test
result=$? #结果返回值
if [ $result -ne 0 ]; then
exit 1 #异常退出容器
fi

cp -r ./dist /app/pkg
cp nginx.conf /app/pkg

3、问题分析:

1、通过查看流水线执行的日志内容,npm ERR! network request to https://registry.npmjs.org/@vue%2fcli-plugin-router failed

2、初步分析是容器访问https://registry.npmjs.org地址有问题,需要在宿主机上执行telnet命令验证一下。

# ping registry.npmjs.org
PING registry.npmjs.org (104.16.0.35) 56(84) bytes of data.
64 bytes from 104.16.0.35 (104.16.0.35): icmp_seq=1 ttl=52 time=134 ms
64 bytes from 104.16.0.35 (104.16.0.35): icmp_seq=2 ttl=52 time=134 ms
64 bytes from 104.16.0.35 (104.16.0.35): icmp_seq=3 ttl=52 time=135 ms
^Z
[2]+  已停止               ping registry.npmjs.org# telnet registry.npmjs.org 443
Trying 104.16.0.35...
Connected to registry.npmjs.org.
Escape character is '^]'.

通过上面的网络检查手段,可以确认网络是通的。

3、再次查看node.js编译脚本的config配置是https://registry.npmmirror.com镜像地址。

4、所以得出结论是执行中使用的npm镜像地址和实际脚本配置的npm config地址对不上,导致报错了。

因为代码里的要求是使用淘宝的npm镜像地址的。

所以需要设置默认的npm镜像地址。 

npm config set registry https://registry.npmmirror.com

4、问题解决: 

node.js编译脚本中配置npm的默认镜像地址。设置后的node.js脚本配置内容如下:

#!/bin/sh
# CMD 脚本执行的工作目录为 pipeline 基础镜像的文件系统目录,包含 clone 的代码
rm -rf /app/pkg/*
npm config set registry https://registry.npmmirror.com/

npm install
npm run build:test
result=$? #结果返回值
if [ $result -ne 0 ]; then
exit 1 #异常退出容器
fi

cp -r ./dist /app/pkg
cp nginx.conf /app/pkg

再次执行CI/CD的流水线编译过程,最后执行成功了。

5、总结:

如果node.js在使用npm时,默认的镜像地址为:https://registry.npmjs.org/,但是这个地址是外国地址,基本是不通的,同时国内开发前端程序时,基本默认配置的淘宝的地址。

因此,大家在遇到这个错误时,可以参考如上的分析过程。

相关文章:

CI/CD的node.js编译报错npm ERR! network request to https://registry.npmjs.org/

1、背景: 在维护paas云平台过程中,有研发反馈paas云平台上的CI/CD的前端流水线执行异常。 2、问题描述: 流水线执行的是前端编译,使用的是node.js环境。报错内容如下: 2024-07-18T01:23:04.203585287Z npm ERR! code E…...

用ssh tunnel的方式设置 AWS DocumentDB 公网访问

AWS DocumentDB的设定是只允许VPC内进行访问的,同时官方文档给了步骤,通过ssh tunnel的方式,可以从公网,或者从VPC外的网络,对DocumentDB进行访问。 我阅读了AWS官方文档并测试了这个步骤,如下是详细的步骤…...

基于电鸿(电力鸿蒙)的边缘计算网关,支持定制

1 产品信息 边缘计算网关基于平头哥 TH1520 芯片,支持 OpenHarmony 小型系统,是 连接物联网设备和云平台的重要枢纽,可应用于城市基础设施,智能工厂,智能建筑,营业网点,运营 服务中心相关场…...

WPF之URI的使用

pack://application:, pack://application:, 是一个在 WPF (Windows Presentation Foundation) 应用程序中用于指定资源位置的 URI (统一资源标识符) 方案的特定格式。这个格式用于访问嵌入在应用程序程序集(assemblies)中的资源,如图像、XA…...

Web开发:ASP.NET CORE前后端交互之AJAX(含基础Demo)

目录 一、后端 二、前端 三、代码位置 四、实现效果 五、关键的点 1.后端传输给前端: 2.前端传输给后端 一、后端 using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using WebAppl…...

经典神经网络(14)T5模型原理详解及其微调(文本摘要)

经典神经网络(14)T5模型原理详解及其微调(文本摘要) 2018 年,谷歌发布基于双向 Transformer 的大规模预训练语言模型 BERT,而后一系列基于 BERT 的研究工作如春笋般涌现,预训练模型也成为了业内解决 NLP 问题的标配。 2019年,谷歌…...

C语言结构体字节对齐技术详解

C语言结构体字节对齐技术详解(第一部分) 在C语言中,结构体字节对齐是一个重要的概念,它涉及到内存中数据的布局和访问效率。字节对齐可以帮助提高程序的性能,减少内存碎片,并确保数据的一致性和正确性。本…...

Linux编辑器——vim的使用

目录 vim的基本概念 命令模式 底行模式 插入模式 注释和取消注释 普通用户进行sudo提权 vim配置问题 vim的基本概念 一般使用的vim有三种模式: 命令模式 底行模式和插入模式,可以进行转换; vim filename 打开vim,进入的…...

Java案例斗地主游戏

目录 一案例要求: 二具体代码: 一案例要求: (由于暂时没有学到通信知识,所以只会发牌,不会设计打牌游戏) 二具体代码: Ⅰ:主函数 package three;public class test {…...

sqlite|轻量数据库|pgadmin4的sqlite数据库操作--重置密码和账号解锁

前言: pgadmin4的用户密码以及pgadmin4创建的pg数据库的连接信息等等都是存放在sqlite数据库内的;而有的时候,可能会由于自己的问题将pgadmin4的密码忘记,这个时候需要重置pgadmin4的密码,或者是pgadmin4的密码输错多…...

【ARMv8/v9 异常模型入门及渐进 9.1 - FIQ 和 IRQ 打开和关闭】

请阅读【ARMv8/v9 ARM64 System Exception】 文章目录 FIQ/IRQ Enable and Disable汇编指令详解功能解释使用场景和注意事项 FIQ/IRQ Enable and Disable 在ARMv8/v9架构中,可以使用下面汇编指令来打开FIQ和 IRQ,代码如下: asm volatile ("msr da…...

深入探索Flutter中的状态管理:使用Provider库

当涉及Flutter状态管理时,provider是一个强大且灵活的解决方案,它提供了一种简单且高效的方式来管理应用程序状态。本文将详细介绍Flutter中provider插件的使用方法、示例代码、各种使用场景以及注意事项。 1. 引入依赖 首先,需要在项目的pubspec.yaml文件中添加provider依…...

算法工程师第十四天(找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树 )

参考文献 代码随想录 一、找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null,5,6,null,null,7] 输出: 7 层次遍历&#…...

memcached 高性能内存对象缓存

memcached 高性能内存对象缓存 memcache是一款开源的高性能分布式内存对象缓存系统,常用于做大型动态web服务器的中间件缓存。 mamcached做web服务的中间缓存示意图 当web服务器接收到请求需要处理动态页面元素时,通常要去数据库调用数据,但…...

C语言 分割链表

题目来源: 代码部分,参考官方题解的写法: // 思路: 就是把原始链表,拆分为2部分,最后再拼接一下。struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* small malloc(sizeof(struct ListNode));struct ListNode*…...

spring ioc的原理

1、控制反转(IOC):对象的创建控制权由程序自身转移到外部(容器) 2、依赖注入(DI):所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。 Spring 中的 IoC 的实现原理就是工厂模式加反射机制。 参考资料…...

npm安装依赖包报错,npm ERR! code ENOTFOUND

一、报错现象: npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/vue failed, reason: connect ETIMEDOUT 104.16.23.35:443 npm WARN registry Using stale data…...

【iOS】——内存对齐

内存对齐是什么 内存对齐指的是数据在内存中的布局方式,它确保每个数据类型的起始地址能够满足该类型对齐的要求。这是因为现代处理器在访问内存时,如果数据的起始地址能够对齐到一定的边界,那么访问速度会更快。这种对齐通常是基于数据类型…...

网络安全-网络安全及其防护措施10

46.软件定义网络(SDN) 软件定义网络(SDN)的概念和特点 软件定义网络(SDN)是一种新兴的网络架构,通过将网络的控制平面(Control Plane)和数据转发平面(Data …...

Pytorch基础应用

1.数据加载 1.1 读取文本文件 方法一:使用 open() 函数和 read() 方法 # 打开文件并读取全部内容 file_path example.txt # 替换为你的文件路径 with open(file_path, r) as file:content file.read()print(content)方法二:逐行读取文件内容 # 逐…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制&#xff0…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

爬虫基础学习day2

# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...