美文网首页
React-Native 错误集锦+解决方案

React-Native 错误集锦+解决方案

作者: Zhang_yD | 来源:发表于2017-10-30 16:10 被阅读3464次

    目录

    1. 'RCTBridgeModule.h' file not found
    2. Runtime is not ready for debugging
    3. No bundle URL present
    4. 闪退(调取本地通讯录,同理其他功能如相册,短信,摄像头,麦克风等)
    5. [真机]Unable to load script from assets index.android.bundle...
    6. Attempt to invoke interface method 'xxx' on a null object reference
    7. Cannot convert argument of type class xxx(ex:java.lang.RuntimeException)
    8. xxx(function name) is not a function
    9. ld: library not found for -lRNSVG-tvOS
    10. Invariant Violation: Element type is invalid...
    11. command+R无法刷新
    12. Invariant Violation: Unable to find node on an unmounted component.
    13. You attempted to set the key _value with the value 0.07264901024010965 on an object that is meant to be immutable and has been frozen.

    内容

    1. 'RCTBridgeModule.h' file not found

    解决方案:
    1_ #import "RCTBridgeModule.h"替换成#import <React/RCTBridgeModule.h>
    2_ 在Build Settings -> Header Search Paths中添加link$(SRCROOT)/../node_modules/react-native/React
    (实际测试用方案1可以解决问题)

    2.Runtime is not ready for debugging
    Runtime is not ready for debugging
    第一次切换到debug模式的时候会出现这个问题
    是因为在app页面reload完成后,执行debug的网页还没有打开
    解决方案: 打开调试器后重新刷新即可 (例: chrome -> 右键 -> 检查)
    3. No bundle URL present
    No bundle URL present
    解决方案:
    1_ 关闭所有的React Packager,重启模拟器
    2_ 删除#ProjectName#/ios下的build目录
    4. 闪退

    用模拟器操作的时候直接闪退,没有提示
    使用Xcode启动则会有错误提示
    是因为没有在Info.plist里面添加Privacy对应的权限

    5. Unable to load script from assets index.android.bundle...

    解决方案:在项目根目录输入以下命令
    1>mkdir android/app/src/main/assets
    2>react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    3>react-native run-android
    注:第二步中的index.js是项目根目录下的index文件,在有些版本中是index.android.js

    6. Attempt to invoke interface method 'xxx' on a null object reference

    原因分析: 代码中对调用的方法传了一个空值或者方法对象本身为空.
    解决方案: 检查代码.

    7. Cannot convert argument of type class xxx(ex:java.lang.RuntimeException)

    原因分析: 传递的值并不是RN可以解析的类型(比如ex中的RuntimeException是因为把catch到error直接传递出去了,RN不能解析,因此报错.
    解决方案: 修改为RN可以识别的类型.比如error.toString()

    8. xxx(function name) is not a function

    原因分析: 方法名写错,一般是出现在调用的地方.

    9. ld: library not found for -lRNSVG-tvOS

    解决方案: 删除libRNSVG-tvOS.a (xcode打开ios项目,在Linked Frameworks and Libraries中可以找到)

    10. Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.

    这个错误表示的参数类型不匹配.
    例中想要一个string或者class/function但是传入的是object.
    在运行的package里面可以找到对应的错误代码.
    比如穿的是{<NewComp />} , 换成{() => <NewComp />}即可

    11. command+R无法刷新

    解决方案: command + shift + k

    12. Invariant Violation: Unable to find node on an unmounted component.

    问题原因: 我试图通过传递ref给一个新的页面使用,在新页面加载的时候原页面也会刷新,所以拥有这个ref的控件在刷新的时候还没有加载出来,在通过这个空的ref来找对应组件,就会出现提示的问题.也就是所谓的空指针.
    解决思路:因为我的需求是获取到元素的绝对坐标,所以我单独用一个方法来获取,然后传递坐标值的方式代替传递ref.

    13. You attempted to set the key _value with the value 0.07264901024010965 on an object that is meant to be immutable and has been frozen.

    使用Animated制作动画的时候,赋值出现了问题.
    一般会有一个警告,从警告里面可以看到是哪里有了问题
    比如要赋值给transform.translateX结果写成了trans.translateX

    附录

    参考链接: React Native开发错误警告处理总结(已解决 !持续更新)

    相关文章

      网友评论

          本文标题:React-Native 错误集锦+解决方案

          本文链接:https://www.haomeiwen.com/subject/nxtmpxtx.html