模块 AppRegistry 不是注册的可调用模块
Posted
技术标签:
【中文标题】模块 AppRegistry 不是注册的可调用模块【英文标题】:Module AppRegistry is not a registered callable module 【发布时间】:2020-05-02 07:29:05 【问题描述】:我从 React Native 开发开始,一开始就遇到了一个问题。尝试运行我的应用时出现错误:
不变违规:模块 AppRegistry 不是已注册的可调用模块(调用 runApplication) 未处理的 JS 异常:不变违规:本机模块不能为空。 未处理的 JS 异常:不变违规:(调用 runApplication)
我的 App.js:
import React, Component from 'react';
import SafeAreaView from 'react-native';
import DefaultRouter from './src/navigation/DefaultRouter'
export default class App extends Component
render()
return (
<SafeAreaView>
<DefaultRouter />
</SafeAreaView>
);
;
index.js:
import AppRegistry from 'react-native';
import App from './App';
import name as appName from './app.json';
AppRegistry.registerComponent(appName, () => App);
DefaultRouter.js:
import createSwitchNavigator, createAppContainer from 'react-navigation';
import LoginScreen from '../screen/LoginScreen';
import DefaultTabBar from '../navigation/TabBar';
const DefaultRouter = createSwitchNavigator(
LOGIN_SCREEN:
screen: LoginScreen
,
TAB_NAVIGATION:
screen: DefaultTabBar
,
initialRouteName: 'LOGIN_SCREEN',
headerMode: 'none'
)
export default createAppContainer(DefaultRouter)
其他文件是简单的Component
子类。
无论我是从 Visual Studio Code 还是使用 react-native run-ios
的终端运行应用程序,问题都会出现
我浏览了现有的答案,但没有找到任何可以为我指明正确方向的东西:React-Native: Module AppRegistry is not a registered callable moduleReact Native: Module AppRegistry is not a registered callable module (calling runApplication)module appregistry is not a registered callable module (calling runApplication) Module AppRegistry is not a registered callable module and Cant find variable: ConstantsReact Native Module AppRegistry is not a registered callable moduleModule AppRegistry is not a registered callable module only in Release configuration
我被卡住了,我不知道从这里去哪里
【问题讨论】:
【参考方案1】:运行npm cache verify
或cd ios && pod install
,然后运行npm run ios
【讨论】:
为什么?此处添加推理,请解释。 有时有些库没有清理好,要修复,开发者可以重新安装或手动清理【参考方案2】:在我的情况下,在 git commit 导致错误之后,我发现提交中的错误代码是:
static emitter = Platform.OS === 'ios' ? new NativeEventEmitter(NativeModule) : DeviceEventEmitter;
其中 NativeModule 为空,因为我没有在 iOS 上实现它!
当我编辑它时
static emitter = Platform.OS === 'ios' ? : DeviceEventEmitter;
那么错误Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication)
就消失了!
【讨论】:
【参考方案3】:不用担心...只需关闭所有服务器进程和节点,然后使用
再次运行您的应用程序react-native run-ios/android
【讨论】:
以上是关于模块 AppRegistry 不是注册的可调用模块的主要内容,如果未能解决你的问题,请参考以下文章
Redux connect - 模块AppRegistry不是注册的可调用模块
React Native - Xcode 12.1 & iOS 14.0.1 Invariant Violation:Module AppRegistry 不是注册的可调用模块(调用 runA
React Native:模块RCTLog不是注册的可调用模块(调用logIfNoNativeHook)