问题描述
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