React Native新項目開發(fā),某一天,一個使用windows電腦的開發(fā)人員跑來告訴我,Android端App啟動報錯了,iOS端顯示正常,編譯器沒報其他錯誤。
錯誤信息如下:
Cannot add a child that doesn't have a YogaNode to a parent without a measure function!(Trying to add a 'RCTRawText [text: />]' to a 'RCTView')

一看這個錯誤,我首先判斷是標(biāo)簽的符號有問題,以前遇到過有人把/>輸錯成/>>,也會報類似錯誤,首先搜一下有沒有存在/>>情況,整個項目一搜索,還真發(fā)現(xiàn)有幾個地方是/>>,趕緊修復(fù)了,再去Android模擬器上跑一下,依舊在報錯。。。
仔細(xì)想了一下,一般這種標(biāo)簽的問題,都是加載時才會報出來,所以很有可能出錯的地方就是一級頁面上。于是我把一級頁面換成了其他頁面,一刷新模擬器,顯示正常了。錯誤頁面算是定位到了,那就來檢查錯誤位置吧!
一般我是懶得去一行一行看代碼的,一級頁面代碼也比較多,我喜歡用二分查找方法,把render中的視圖代碼分為上下兩部分,刪掉上面部分后,發(fā)現(xiàn)問題依舊,那問題就在下面部分中,繼續(xù)使用二分法,最終發(fā)現(xiàn)了某一行代碼中多了一個/>,刪除后,問題解決。
后面詢問開發(fā)人員,發(fā)現(xiàn)是合并代碼時發(fā)現(xiàn)了這里有沖突,解決沖突時少刪除了一行代碼。按理說編譯器應(yīng)該能檢查出這種問題的,但是我們用的webstorm和VS沒有提示錯誤,不知道是不是配置問題。
總結(jié):
遇到Cannot add a child that doesn't have a YogaNode to a parent without a measure function!(Trying to add a 'RCTRawText [text: />]' to a 'RCTView')錯誤,就去檢查標(biāo)簽結(jié)尾是否有問題,一般就是搜索是否有/>>情況,或者多了/>。