iOS上的React Native中的BatchedBridge错误

时间:2017-12-28 20:57:28

标签: ios react-native

我有一个简单的原生iOS应用程序,我想将React Native集成到其中。当我打开视图控制器时,出现错误:

> Error calling RCTLog.logIfNoNativeHook
> 
> Unhandled JS Exception: Could not get BatchedBridge, make sure your
> bundle is packaged correctly
> 
> RCTFatal
> -[RCTCxxBridge handleError:]
> __34-[RCTCxxBridge _initializeBridge:]_block_invoke facebook::react::RCTMessageThread::tryFunc(std::__1::function<void ()>
> const&)
> facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
> ()>&&)::$_1::operator()() const void
> std::__1::__invoke_void_return_wrapper<void>::__call<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
> ()>&&)::$_1&>(facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
> ()>&&)::$_1&&&)
> std::__1::__function::__func<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
> ()>&&)::$_1,
> std::__1::allocator<facebook::react::RCTMessageThread::runOnQueue(std::__1::function<void
> ()>&&)::$_1>, void ()>::operator()() std::__1::function<void
> ()>::operator()() const invocation function for block in
> facebook::react::RCTMessageThread::runAsync(std::__1::function<void
> ()>)
> __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__
> __CFRunLoopDoBlocks
> __CFRunLoopRun CFRunLoopRunSpecific
> +[RCTCxxBridge runRunLoop]
> __NSThread__start__
> _pthread_body
> _pthread_body thread_start

这是我的Podfile:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'NativeRNTest' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'BatchedBridge',
    # Add any other subspecs you want to use in your project
  ]
  # Explicitly include Yoga if you are using RN >= 0.42.0
  pod "yoga", :path => "../node_modules/react-native/ReactCommon/yoga"

  # Third party deps podspec link
  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'

  # Pods for NativeRNTest

  target 'NativeRNTestTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'NativeRNTestUITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

我的环境:

>react-native info
Scanning folders for symlinks in /Users/[redacted]/Projects/native_rn_demo/node_modules (5ms)

Environment:

  OS: macOS Sierra 10.12.6
  Node: 8.9.0
  Yarn: 1.1.0
  npm: 5.6.0
  Watchman: 4.9.0
  Xcode: Xcode 9.2 Build version 9C40b
  Android Studio: 2.3 AI-162.4069837

Packages: (wanted => installed)
  react: ^16.0.0 => 16.0.0
  react-native: ^0.51.0 => 0.51.0

我已经搜索过这个问题了,所有的解决方案都适用于Android,而且似乎不在这里工作。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

好的,我通过将index.js重命名为index.ios.js来修正错误。

答案 1 :(得分:0)

这就是我解决问题的方式。

终止您的Metro捆绑器> react-native链接> react-native run-ios

它不是捆绑的,因为某些错误未在模拟器中显示,只是捆绑失败。我从开始重新打包软件包后,就解决了错误。

答案 2 :(得分:0)

对于我来说,我忘了关闭我的地铁捆绑器,所以当我退出终端窗口并重建项目时,一切正常。