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

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

http://www.lryc.cn/news/402425.html

相关文章:

  • 用ssh tunnel的方式设置 AWS DocumentDB 公网访问
  • 基于电鸿(电力鸿蒙)的边缘计算网关,支持定制
  • WPF之URI的使用
  • Web开发:ASP.NET CORE前后端交互之AJAX(含基础Demo)
  • 经典神经网络(14)T5模型原理详解及其微调(文本摘要)
  • C语言结构体字节对齐技术详解
  • Linux编辑器——vim的使用
  • Java案例斗地主游戏
  • sqlite|轻量数据库|pgadmin4的sqlite数据库操作--重置密码和账号解锁
  • 【ARMv8/v9 异常模型入门及渐进 9.1 - FIQ 和 IRQ 打开和关闭】
  • 深入探索Flutter中的状态管理:使用Provider库
  • 算法工程师第十四天(找树左下角的值 路径总和 从中序与后序遍历序列构造二叉树 )
  • memcached 高性能内存对象缓存
  • C语言 分割链表
  • spring ioc的原理
  • npm安装依赖包报错,npm ERR! code ENOTFOUND
  • 【iOS】——内存对齐
  • 网络安全-网络安全及其防护措施10
  • Pytorch基础应用
  • Axure 教程 | 设置文本框背景透明
  • 【BUG】已解决:NOAUTH Authentication required
  • 全国产服务器主板:搭载飞腾FT2000+/64处理器的高性能加固服务器
  • OPC UA边缘计算耦合器BL205工业通信的最佳解决方案
  • 【已解决】Django连接MySQL启动报错Did you install mysqlclient?
  • ubuntu gcc g++版本切换
  • 如何发一篇顶会论文? 涉及3D高斯,slam,自动驾驶,三维点云等等
  • Java面试八股之什么是Redis的缓存更新
  • 新华三H3CNE网络工程师认证—VLAN使用场景与原理
  • Linux-开机自动挂载(文件系统、交换空间)
  • [003-02-10].第10节:Docker环境下搭建Redis主从复制架构