npm使用sinopia搭建私服---错误

背景: 公司内网电脑不能连接任何外部网络,在使用angular4时由于不能使用npm网络仓库,所以需要搭建内网离线仓库。直接的做法是在联网的电脑上搭建成功后,将所有工具转移到离线的电脑上。通过网络搜索后发现,使用sinopia搭建npm私有仓库是最合适的做法。摘录最好的一篇博客:https://www.cnblogs.com/LittleSix/p/6053549.html

1. 首先采用windows7(办公系统)搭建,npm install -g sinopia时确认依赖工具,解决办法卡死。但发现sinopia已成功install,所以继续启动sinopia,完全可行。至此一切顺利,并且尝试通过搭建的私服install bootstrap和jquery都能成功。但是install @angular/cli(所有以@开头的)

都不行。然后怀疑和前面sinopia的报错有关。

2. 在无可奈何的情况下,自己电脑安装虚拟机,安装linux环境搭建,期间遇到各种install失败的奇葩问题,但怀疑和公司网络有关,此处均不列举。但要指出,上述博客的搭建过程中,在直接install sinopia时遇到一个错误,这个在linux环境下需要先install node-gyp,作者遗漏此点。在网络通常的情况下,按照博客中的过程去做,应该其他的都很顺利。

3. 各项都很顺利以后,install @angular/cli仍然失败,在经过长时间的百度之后,一无所获。最后选在翻墙使用google,在sinopia的github上找到解决办法(github是个好东西,以前就有感觉,在开源的系统遇到不可知的问题,要先想到githun的issue中找解决办法):https://github.com/rlidwka/sinopia/issues/399。这里讲的很详细。

4. 具体摘录如下:此问题是当前版本sinopia的bug,在未来版本中应该会修复,当前版本的解决办法有两个:第二个是在install有关@的项目时不走私服,而直接从npm外仓库install。显然不符合我们的目的,因为这样我们的私有仓库中就不会存在@angular/cli等类似的包。第一个方法是修改sinopia:

 

First you must update your config.yaml

section:

packages: '@*/*': # scoped packages access: $all publish: $authenticated proxy: npmjs

in default config.yaml there is no proxy setting.

 

Then in sinopia/lib/up-storage.js

change code on line number 10

var encode = function(thing) { return encodeURIComponent(thing).replace(/^%40/, '@'); };

补充: 如果服务器是离线的,本地电脑也肯定是离线的才需要搭建npm离线私服。这种情况下搭建成功的私服在install @angular/cli可能会遇到Cannot download node-sass的某个文件的情况。具体为什么会需要下载,这个我不知道具体原因,但是我知道解决办法:使用其他途径下载需要下载的文件,然后将其添加进npm-cache\node-sass文件夹中。

转载于:https://my.oschina.net/u/3651261/blog/1601455

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值