当前位置: 首页 > 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/,但是这个地址是外国地址,基本是不通的,同时国内开发前端程序时,基本默认配置的淘宝的地址。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言结构体字节对齐技术详解
  • ClickHouse中使用UNION
  • 浅谈Open.Json.pickle.Os
  • JavaEE:Lombok工具包的使用以及EditStarter插件的安装
  • 大语言模型在病理AI领域中的应用2|文献速递·24-07-18
  • 2024717-VSCode-1.19.1-部署gcc13-C++23-win10-22h2
  • 第122天:内网安全-域信息收集应用网络凭据CS 插件AdfindBloodHound
  • 使用Redis的SETNX命令实现分布式锁
  • 科普文:微服务技术栈梳理
  • 详细讲解下 算法中的 堆栈
  • 提示工程的技术与策略分类
  • 贪心算法(2024/7/16)
  • 从0到1搭建数据中台(4):neo4j初识及安装使用
  • Golang 创建 Excel 文件
  • PlantUML-UML 绘图工具安装、Graphviz安装、本地使用/在线使用、语法、图示案例
  • 分享一款快速APP功能测试工具
  • 【mysql】环境安装、服务启动、密码设置
  • 【面试系列】之二:关于js原型
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Akka系列(七):Actor持久化之Akka persistence
  • Centos6.8 使用rpm安装mysql5.7
  • magento2项目上线注意事项
  • Python3爬取英雄联盟英雄皮肤大图
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 什么软件可以剪辑音乐?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 一些关于Rust在2019年的思考
  • ​2021半年盘点,不想你错过的重磅新书
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​什么是bug?bug的源头在哪里?
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #define用法
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (1)Android开发优化---------UI优化
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (六)软件测试分工
  • (四)事件系统
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)创业家杂志:UCWEB天使第一步
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .NET 读取 JSON格式的数据
  • .net对接阿里云CSB服务
  • /usr/bin/env: node: No such file or directory
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [100天算法】-x 的平方根(day 61)
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现