本文同步更新於: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
安裝爲何會致使依賴出錯,就再也不作深刻的研究了。感興趣的同窗能夠繼續研究。
寫下此篇,望能幫助到一樣中了這千萬分之一律率的同窗們,及時發現問題所在。