react-native 開發前的見面禮 -- 誤入依賴坑

本文同步更新於: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包爲何就不行呢,經過查看以cnpmnpm 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安裝爲何會致使依賴出錯,就再也不作深刻的研究了。感興趣的同窗能夠繼續研究。

最後

寫下此篇,望能幫助到一樣中了這千萬分之一律率的同窗們,及時發現問題所在。

相關文章
相關標籤/搜索