Jenkins构建React项目时npm install报错,怎么排查?
各位大佬帮忙看看,我配置Jenkins持续集成时卡住好久了。React项目在Jenkins构建到npm install这步就报错,本地跑完全没问题啊。
错误提示是这样的:npm ERR! code ENETUNREACH,然后说连接registry.npmjs.org失败。我试过在Jenkins里改npmrc文件,设置registry地址,也试过在Jenkins任务里加npm config命令,都不行。
这是我的package.json里一个依赖片段:
{
"dependencies": {
"react": "^18.2.0",
"axios": "^1.6.2"
}
}
Jenkinsfile里执行的脚本就是简单的
stage('Install') {
steps {
sh 'npm install --legacy-peer-deps'
}
}
为什么会连不上npm源呢?难道是服务器防火墙的问题吗?
curl https://registry.npmjs.org,如果连不通,那就是网络策略的问题。很多公司生产环境服务器都是内网隔离的,你得找运维确认下防火墙规则。如果确实不能直接访问外网npm源,建议换淘宝镜像,速度也快。在Jenkins的全局配置里加上这行:
npm config set registry https://registry.npmmirror.com,或者直接改项目根目录下的.npmrc文件。另外你用的是--legacy-peer-deps参数,这个没问题,但建议把npm版本固定一下。我遇到过类似情况,最后发现Jenkins用的Node.js版本太老了,建议升到16以上。完整的解决方案是:
最后提醒一句,记得检查Jenkins的工作空间权限,有时候权限不够也会导致安装失败。按这个思路排查,基本都能解决。