React Native新项目开发,某一天,一个使用windows电脑的开发人员跑来告诉我,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')
一看这个错误,我首先判断是标签的符号有问题,以前遇到过有人把/>
输错成/>>
,也会报类似错误,首先搜一下有没有存在/>>
情况,整个项目一搜索,还真发现有几个地方是/>>
,赶紧修复了,再去Android模拟器上跑一下,依旧在报错。。。
仔细想了一下,一般这种标签的问题,都是加载时才会报出来,所以很有可能出错的地方就是一级页面上。于是我把一级页面换成了其他页面,一刷新模拟器,显示正常了。错误页面算是定位到了,那就来检查错误位置吧!
一般我是懒得去一行一行看代码的,一级页面代码也比较多,我喜欢用二分查找方法,把render中的视图代码分为上下两部分,删掉上面部分后,发现问题依旧,那问题就在下面部分中,继续使用二分法,最终发现了某一行代码中多了一个/>
,删除后,问题解决。
后面询问开发人员,发现是合并代码时发现了这里有冲突,解决冲突时少删除了一行代码。按理说编译器应该能检查出这种问题的,但是我们用的webstorm和VS没有提示错误,不知道是不是配置问题。
总结:
遇到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')
错误,就去检查标签结尾是否有问题,一般就是搜索是否有/>>
情况,或者多了/>
。