Module AppRegistry is not a registered callable module (calling runApplication)的解决思路

Module AppRegistry is not a registered callable module (calling runApplication)

这个错误比较少的遇到,如遇到你可能进行了bundle的升级加载相关,来简单看一下bundle加载后的流程:

当bundle文件被加载后,即执行AppRegistry.js中的,即会被直接注册到CallableModule队列中,CallableModule是RN内置的Java调用在JS中的的类,一般为AppRegistry.js(入口文件),和RCTEventEmitter(关于事件分发)的类。在Java中的,由于一些bussness模块是自启动(或者说是后台运行),加载完之后会执行CatalystInstance.getJSModule(AppRegistry.class).runApplication("JJApp", new WritableNativeMap),有可能在这个过程中CallableModule的状态会被重置,造成异常。所以在这个过程中同时执行重新加载bundle(或者说reCreateRNContext)会造成异常。如果几秒一个周期反复reCreateRNContext,还有可能会造成runApplication的时候CatalystInstance实例对象为空,或Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) {9a12653} sending message to a Handler on a dead thread等异常情况。

BatchedBridge.registerCallableModule('AppRegistry', AppRegistry);

解决方案:

1.在AppRegistry.runApplication的时候避免重新加载bundle重置RNContext环境

2.在加载bundle的时候加状态,不要进行AppRegistry.runApplication,因为重新加载后依然会执行AppRegistry.runApplication

你可能感兴趣的:(ReactNative跨平台)