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 #异常退出容器
ficp -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 #异常退出容器
ficp -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)方法二:逐行读取文件内容 # 逐…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
