最近在开发中遇到了一个问题,在项目中由于用到了公司内网下的npm依赖包,需要设置npm镜像地址为公司内网下的,但是我在设置完后在npm install的时候进度条竟然卡在那不动,刚开始还以为是网络的原因,后来我在其他的项目中npm install竟然没问题,那就说明不是网络的原因。并且同事的就没有问题。在解决问题的过程中我学到了很多命令:
1. 关于npm的:
npm config set registry http://registry.npmjs.org
原npm地址 npm install下载会有点慢,有的依赖包或者软件的话需要翻墙的话那就下载不了了
npm config set registry https://registry.npm.taobao.org
设置为国内镜像地址,使用的话直接npm install就行,相当于从淘宝镜像上面下载,速度会比原npm下载速度快得多
设置完后可以查询当前镜像地址是否更换了:npm config get
然后在项目中就可以直接使用npm install下载各种依赖包了
2. 解决npm下载慢的问题也可以通过cnpm实现
先全局安装cnpm : npm install cnpm -g, 如果报错没权限操作的话执行:sudo npm install cnpm -g,下载完毕后直接 cnpm install package --save就可以,作用跟设置淘宝镜像地址一样。
3. 在解决问题的过程中我想着可能跟我的node版本有关,难道是版本太高了,下载不了某个低版本的依赖包,所以我就降低了我的node版本,而我又不想卸载我的原node,所以我查找资料,知道了有一个可以专门管理node版本的模块n,他可以实现node的升级,降级,安装多个版本的node并切换:
首先得全局安装n:sudo npm install n -g
然后检测安装了哪些版本的node: n
版本升级/降级:sudo n 版本号 (sudo n 6.4.1)
切换版本:n 版本号 (n 6.4.1)
删除版本:sudo n rm 版本号 (sudo n rm 6.4.1)
注:sudo是mac下输入密码验证身份的命令,因此window系统下用户是以管理员运行命令行,所以直接去掉sudo就行
4. 在npm install xxx@1.0.7 --save的时候报这样的错:
是因为xxx@1.0.7包的下载依赖于***@1.1.1,只要把***@1.1.1先下载,再重新下载***@1.1.1就行了。
5. 报这个错是因为没有操作权限,加上sudo就行了。
6. 执行npm cache clean --force 强制执行清除npm缓存
以上这些都是我在解决npm install内网下的包时报错学到的一些命令,但是最后我依旧没找到npm install下载内网下的包报错的解决版本。
最后的解决办法简直简单粗暴,找到了package-lock.json相应包的地址然后把包下载下来了,直接放在node_modules里面,简单粗暴的就解决了我想了半天的问题。