nexus2无法支持npm范围发布的一次定位

问题描述

nexus2 的时候,无法下载 @type/node 的组件,绕过了@type/node,又出现了其他的@开头的组件无法下载

绕过的方式:

npm i -g @type/node --registry=https://www.npmjs.org

名词解释

名字解释
nexus2公司内网的npm部署仓库,2.x版本,不支持范围
nexus3公司内网的npm部署仓库,3.x版本,支持范围部署

在项目根目录执行npm install的时候,控制台错误信息:

60 error code E404
61 error 404 Not Found: @types/node@8.0.7
62 verbose exit [ 1, true ]

日志文件定位到错误信息

46 http fetch GET 404 http://www.mynexus.com/nexus/c/content/repositories/npm-taobao/@types/node/-/node-8.0.7.tgz 22ms

既然日志文件说 @types/node/ 无法找到,就打开日志文件,搜索关键字: @types/node/,然后看看具体的下载地址,找到下载地址后,用本地的浏览器打开,确实是无法下载文件。

google到的内容 nexus2 不支持@路径
https://groups.google.com/a/glists.sonatype.com/forum/#!topic/nexus-users/JKELwE0MJJU

问: 为什么Nexus OSS 2.13 代理的 https://registry.npmjs.org/ 地址,无法安装一个叫做@types/node 的模块?

答: 这是一个范围包, nexus2.x 不支持 范围包

npm 范围说明
https://cloud.tencent.com/developer/section/1490269

把相关的组件放在一起发布的意思

解决办法

清理本地缓存

好像很重要
npm cache clean --force

这里主要是版本覆盖后,远程是最新版,本地是原始版的时候,这样需要清理本地的原始版本
(当nexus仓库的hosted仓库设置为允许重复发布的时候,会出现的现象),这里会清除 %Appdata%/npm-cache 下面的本地缓存包

很重要
因为 t-button,t-for,t-header 这几个前端主程定义的组件

在本地下载后,在上传到仓库,会导致验证sha失败。

所以需要 --no-shrinkwrap ,如果是源码上传,可能就不用参数 --no-shrinkwrap

npm install --no-shrinkwrap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值