TypeError:null 不是对象(评估“Chat.addListener”)

Posted

技术标签:

【中文标题】TypeError:null 不是对象(评估“Chat.addListener”)【英文标题】:TypeError: null is not an object (evaluating 'Chat.addListener') 【发布时间】:2020-06-10 09:09:34 【问题描述】:

我有一个在 androidios 上都运行良好的 react native 项目。 之后,我使用包“react-native-quickblox-sdk v0.5.2-beta”将呼叫和聊天服务添加到我的项目中。

它在 android 上运行得很好,但是当我在 iOS 上运行它时,在加载所有包之后,就在打开应用程序之前,它会出现错误。

。 这是错误的图像。

我的 podFile:

plugin 'cocoapods-fix-react-native'

platform :ios, '10.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
pod 'Firebase/Core', '~> 6.15.0'
pod 'Firebase/Messaging'

target 'myApp' do

permissions_path = '../node_modules/react-native-permissions/ios'
  # Pods for myApp
  pod 'QuickBlox'
  pod 'Quickblox-WebRTC'
  pod 'RNPermissions', :path => '../node_modules/react-native-permissions'
  pod 'Permission-Camera', :path => "#permissions_path/Camera.podspec"
  pod 'Permission-Microphone', :path => "#permissions_path/Microphone.podspec"
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'

  pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'


  pod 'CodePush', :path => '../node_modules/react-native-code-push'
  pod 'ReactNativeExceptionHandler', :podspec => '../node_modules/react-native-exception-handler/ReactNativeExceptionHandler.podspec'
  # pod 'RNFirebase', :path => '../node_modules/react-native-firebase/ios'
  pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage'
  # pod 'RNGestureHandler', :podspec => '../node_modules/react-native-gesture-handler/RNGestureHandler.podspec'
  pod 'react-native-video', :path => '../node_modules/react-native-video/react-native-video.podspec'


  pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
  pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
  pod 'react-native-orientation-locker', :path => '../node_modules/react-native-orientation-locker'
  pod 'RNBootSplash', :path => '../node_modules/react-native-bootsplash'
  pod 'lottie-react-native', :path => '../node_modules/lottie-react-native'

  pod 'lottie-ios', :path => '../node_modules/lottie-ios'

  # pod 'RNCPushNotificationIOS', :path => '../node_modules/@react-native-community/push-notification-ios'

end

我添加和删除了很多东西(例如顶部的 quickblox pod),并且我更改了 'node_modules/quickblox-react-native-sdk' 中的一些代码以使其正常工作,但问题仍然存在。

在地址:PROJECT_DIRECTORY/node_modules/quickblox-react-native-sdk/index.js 中有一个对象,它似乎返回 null 或未定义。这是代码。

Chat.addListener 更改为Chat && Chat.addListener 会引发另一个带有此标题的TypeError:..... (evaluating 'Chat.removeEventListeners') 等等..

我们将不胜感激任何帮助或解决方案。

【问题讨论】:

【参考方案1】:

经过2天的努力,我找到了解决方案。

问题出在 iOS 链接上。 podfile 中不需要“QuickBlox”和“Quickblox-WebRTC” pod(我后来添加了它以查看它是否有效,但它不起作用)。

相反,我使用 rnpm 将“quickblox-react-native-sdk”与 iOS 相关联。

原来如此:

1- 在 bash 上执行此命令:

react-native link quickblox-react-native-sdk --platforms ios

2- 之后在 bash 上的 project-folder/ios 中写入 pod install 命令,然后安装 quickblox sdk pod。

再次运行项目,现在“quickblox-react-native-sdk”在 iOS 上运行良好。

【讨论】:

在 React Native 的单个应用程序中是否有包含视频和聊天功能的示例?

以上是关于TypeError:null 不是对象(评估“Chat.addListener”)的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:null 不是对象(评估 ''this.state.torchon')

“TypeError:null 不是对象(评估‘RCTVideoInstance.Constants’)”

TypeError:null 不是对象(评估'RNRandomBytes.seed')React Native

TypeError:null 不是对象(评估'this.state.initialPosition') - React Native

TypeError:null 不是对象(评估“storagedTechs.split”)

如何解决:TypeError:null 不是对象(评估“AgoraRtcChannelModule.prefix”)?