Native module cannot be null / N
2019-09-26 本文已影响0人
lwhldy
错误如图类似
NativeEventEmitter.png
困扰了好久的问题,各种google,度娘都写的是手动集成RN出现该问题的解决方案,由于楼主是自动集成的库,所有Native库都是自动link的,所以网上的那些解决方案对我都无效。
但是还是贴一下手动集成RN报该错误的解决方案,
手动 linking
步骤1
如果库具有native的代码,则其文件夹中必须存在.xcodeproj
文件。 将此文件拖到Xcode上的项目中(通常位于Xcode上的Libraries
组下);
步骤 2
单击您的主项目文件(代表.xcodeproj的文件)选择Build Phases并将静态库从您要导入的Library中的Products文件夹拖到Link Binary With Libraries
步骤 2步骤 3
并非每个图书馆都需要此步骤,您需要考虑的是:
我是否需要在编译时知道库的内容?
这意味着,您是在本机端还是仅在JavaScript中使用此库? 如果你只是在JavaScript中使用它,那么你不需要此步骤!
如果你确实需要从native调用它,那么我们需要知道库的头文件。 要实现这一点,您必须转到项目的文件,选择“Build Settings”并搜索“Header Search Paths”。 在那里你应该包括你的图书馆的路径。 (此文档过去建议使用recursive
,但不再推荐使用它,因为它可能导致细微的构建失败,尤其是对于CocoaPods。)
如果你是自动集成RN, 你需要在项目根目录 ios
文件夹内Podfile
(这是iOS第三库管理文件,不再赘述,感兴趣自行度娘)文件添加类似如下的第三方库路径,这是解决思路,具体问题具体分析,缺少什么文件就在node_modules文件内找,参照如下填写,一般都能解决问题。
pod 'React-RCTPushNotification', :path => '../node_modules/react-native/Libraries/PushNotificationIOS'