行业知识
npm私有源构建项目下载依赖报错
2026-11-01 04:52:48
来源:互联网转载
Jenkins���建项目报错,依赖找不到
Error: Couldn't find any versions for "@babel/helper-module-imports" that matches "^7.22.15" at MessageError.ExtendableBuiltin (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16/lib/node_modules/yarn/lib/cli.js:721:66) at new MessageError (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16/lib/node_modules/yarn/lib/cli.js:750:123) at Function. (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16/lib/node_modules/yarn/lib/cli.js:50351:13) at Generator.next () at step (/data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16/lib/node_modules/yarn/lib/cli.js:310:30) at /data1/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16/lib/node_modules/yarn/lib/cli.js:321:13 at runMicrotasks () at processTicksAndRejections (node:internal/process/task_queues:96:5)Build step 'Execute shell' marked build as failureDeleting 1 temporary filesSSH: Current build result is [FAILURE], not going to run.Finished: FAILURE
前置小知识
Node.js中package.json中^和~的区别
- ~会匹配最近的小版本依赖包,比如~1.2.3会匹配所有1.2.x版本,但是不包括1.3.0
- ^会匹配最新的大版本依赖包,比如 ^1.2.3会匹配所有1.x.x的包,包括1.3.0,但是不包括2.0.0
分析问题
- 由于项目依赖一般都以~或者^开头,npm源某些依赖如果升级,那我们项目在构建的时候,就会根据前置小知识中的规则去获取最新包
- 公司搭建了npm私有源,但是与npm官方源同步频率时间未设置,导致下载不到应有的最新的包
解决方案
方案一
- 去npm官方网站看当前下载失败的依赖上一次稳定的版本号
- 找到合适的版本号 在项目中package.json进行锁定版本号,举例说明如下:
{"resolutions": { "@babel/helper-module-imports": "7.22.5", }}
方案二
npm私有源是通过Nexus统一管理的
- 登录Nexus
- 我们配置npm私有源一般会建立三个仓库
| 项目 | 说明 |
|---|---|
| hosted | 本地仓库。提供本地私库功能 |
| group | 组仓库。组类型,可以组合多个仓库为一个地址提供服务 |
| proxy | 代理仓库。提供代理其他仓库的类型,可以设置官方源或者镜像源 |
- 进入proxy仓库配置页
- 修改配置
Maximum component age
这个的含义是获取到 remote 包后,多长时间开始缓存,改成 -1, 意思是获取到就缓存
Maximum metadata age
多长时间去 remote 仓库获取下源信息, 默认是 30天 ,
比方说 vue 这个包,今天上午10点发布了一个版本 2.7.15,你在11点执行 npm install vue@2.7.15,是会报 404 的,因为私服是30天获取一次 remote 仓库的信息,所以最好设置 30分钟以内,这样就可以快速获取到更新了
上一篇:腾讯域名怎么绑定到服务器?
下一篇:服务器系统怎么下载补丁?