我有一个简单的原生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,而且似乎不在这里工作。有什么想法吗?
答案 0 :(得分:2)
好的,我通过将index.js
重命名为index.ios.js
来修正错误。
答案 1 :(得分:0)
这就是我解决问题的方式。
终止您的Metro捆绑器> react-native链接> react-native run-ios
它不是捆绑的,因为某些错误未在模拟器中显示,只是捆绑失败。我从开始重新打包软件包后,就解决了错误。
答案 2 :(得分:0)
对于我来说,我忘了关闭我的地铁捆绑器,所以当我退出终端窗口并重建项目时,一切正常。