本文同步更新于:www.devsai.comjavascript
对前端开发的同窗来讲,react native开发确定是让人兴奋,用javaScript来开发app应用,想一想就激动。前端
正好,有这么个机会,要用rn开发个功能,代码已由同事开发了部分。java
因此,我从git上更新最新的代码后就想把代码跑起来,而想代码跑起来要作的第一件事即是安装依赖。node
谁会想到,就装个依赖而已,而我却掉进了这坑里,这个千万分之一的几率都不知道有没有的坑。react
我想,不少的同窗,都是用npm
作依赖包管理的吧。ios
可npm
的访问速度实在太慢了,慢得感受不到有数据过来,怎么能够忍受咱们 宝贵的时间就这么白白的被浪费了。git
因而乎,咱们万能的淘宝出了个淘宝镜像,经过这镜像去安装依赖包,这速度,真是飞通常的感受。github
大厂就是大厂,对大厂就有一种莫名的信任感,听说用的人还挺多。npm
随便贴下怎么用着镜像吧react-native
npm install cnpm -g --registry=https://registry.npm.taobao.org复制代码
而后就可使用cnpm
安装各类依赖包了,用法跟使用npm
同样。
聪明的我,也是这么作的。
那么,问题来了,我经过cnpm i
用了眨了下眼睛的时间安装完了依赖后。
直接执行了以下命令:
react-native run-ios复制代码
原本的反应应该是,通过一系列的编译,启动模拟器,同时启动本地服务用来热更新代码
可就在启动本地服务时却报了以下的错,本地服务直接终止了。
而查了下src
中的javaScript代码,并无使用到on
啊。
顿时感受很差了,一头雾水,这是啥状况呢, 以后就不断的作各类的猜想与尝试
是否是node版本不对呢,问题以前开发的同事用的node版本,发现不一样,立马装上同版本的node,可仍是不行
是否是xcode的版本问题呢,由于执行react-native run-ios
会调用xcode进行build,报着试试看的心态,升级了xcode,发现仍是不对
是否是依赖没装好呢,因而清了./node_modules
目录,再安装了一遍,结果依然不行。
在网上找了一大圈也没找到个缘由,这TM是什么状况。。。
正当要绝望之时,忽然想到以前装的react native的官方demo, 进入目录运行react-native run-ios
,神奇般的没有任何报错的起来了,个人天呐~
这时,我已经能够很明确的知道,确定不是node的问题,也不是xcode的问题,那么是否是依赖的问题呢,
因而删了官方例子中./node_modules
的文件,用cnpm i
又安装一遍,再次执行react-native run-ios
,竟然也不行了,报了一样的错。
好吧, 到这里,已经很是的明显了,就是安装的依赖包引发的。
因而向同事讨要了其余的镜像地址http://r.cnpmjs.org
,我再使用以下命令在项目中尝试安装了下依赖包
npm i --registry http://r.cnpmjs.org/复制代码
果不其然,再次执行react-native run-ios
,很顺利的跑起来了。
原来都是cnpm
惹的祸,妄我这么的信任你。
固然了,也是不说经过cnpm
安装的依赖就必定会报错了,我只是中了这千万分之一的几率。
写到这应该是好结束了,由于问题已经解决了。
但是,究竟是加载了哪一个依赖包出的问题呢,为何用cnpm
安装就会有问题呢,咱们仍是不知道。
贯彻我一贯的刨根问底的精神,我又通过了我屡次的尝试,发现问题就出在react-native
这个最主要的包上。这就尴尬了,总不能不装这个包吧。
那么,react-native
包为何就不行呢,经过查看以cnpm
和npm i --registry http://r.cnpmjs.org/
两种方式生成的node-modules
中的文件发现,cnpm
生成的目录都是个symlink
符号连接,真正的文件夹是平级目录下的隐藏文件夹,以版本号开头命名;而经过另外一种方式生成的就是正常的文件夹了。
这cnpm
到底干了啥呢,阅读了下在github上的说明,里面有这么一段:
原来上面说的符号连接就是这么来的,并且还告诉咱们能够切换成用npm
来安装,因而,再次删除./node_modules
,执行cnpm i --by=npm
, 发现node_modules
中再也不是符号连接了,再执行react-native run-ios
后,程序顺利的执行了,固然,当改为了npm
方式安装,就体验不到cnpm
带给你的飞通常的安装速度了。
因此,出错的缘由应该是使用了npminstall来安装依赖,经过上面一刨,能够知道,cnpm
仍是能够用的。只要改下它使用的默认安装方法。
对于npminstall
安装为何会致使依赖出错,就再也不作深刻的研究了。感兴趣的同窗能够继续研究。
写下此篇,望能帮助到一样中了这千万分之一律率的同窗们,及时发现问题所在。