模块AppRegistry未注册为可调用模块(调用runApplication)。

139

我正在使用 Native Base 来制作 React-Native App。 对这两个东西都很陌生。 当我运行应用程序时,它给了我这个错误:

输入图像描述

这是我的代码:

export default class Point extends Component {

    render() {
        return (
            <Container>
                <Header>
                    <Left>
                        <Button transparent>
                            <Icon name='menu' />
                        </Button>
                    </Left>
                    <Body>
                        <Title>Header</Title>
                    </Body>
                    <Right />
                </Header>
            </Container>
        );
    }
}
这是我版本的截图
这里是我的版本截图: enter image description here nativebase版本是 "native-base": "^2.1.2"。

1
分享 index.ios.js 的代码。同时检查是否有其他打包程序正在运行。 - Supriya Kalghatgi
这可能是最常见的问题,其答案被反复提及。 - Taylor A. Leach
查看AppRegistry.js,发现有很多错误,因为没有TypeScript支持。这是错误的原因吗?我需要包含TypeScript支持吗? - Abhinav Saxena
31个回答

192

只需终止所有 node 进程,然后启动 npm 服务器并运行应用程序:

步骤1:执行命令 killall -9 node

对于 Windows 用户,请运行:taskkill /im node.exe

如果进程仍在运行,请运行 taskkill /f /im node.exe

步骤2:执行命令 npm start --reset-cache

步骤3:执行命令 react-native run-iosreact-native run-android


4
我正在尝试将react-native项目从Expo转换为CLI。我按照您说的做了一切,但仍然遇到相同的问题。我尝试了与此问题相关的所有答案,但都没有帮助我。 - Avijit Barua
对于Windows系统,请键入TASKKILL /IM node.exe,或者您可以直接删除.expo文件夹。 - Qbert
在react-native版本'0.68.1'上无法工作!有什么解决方案吗? - Prateek Gupta
我也无法使用。 - Kowsigan Atsayam
在 Expo React Native 版本 48 上对我有效! - Alvin CHENG
显示剩余2条评论

49
关闭当前的Metro Bundler并通过重置缓存来重新启动对我有效。
npm start -- --reset-cache

6
什么也没有发生!! - Prashant
@SaeedZhiany,请在不确定是错误的情况下,请不要更改答案中命令的内容。在这种情况下,似乎并不是错误,因为几乎所有建议使用这个命令的答案都有它(而且这是一个常见的模式)。您改变了命令的含义,可能使遇到此答案的人无法使用。 - undefined

16

使用以下命令清除缓存:

react-native start --reset-cache

6

您应该在 index.ios.js 文件的底部添加以下内容:AppRegistry.registerComponent('Point', () => Point);,同时还要从 react-native 导入 AppRegistry


我正在使用 NativeBase <a href='https://docs.nativebase.io/docs/GetStarted.html#Quick_Setup'> link</a>,请点击此处。 - Asad

5

我曾经遇到过这个问题——很奇怪,因为我将我的代码库重置到了应用程序正常工作的时间。问题出在我的模拟器(iOS)上。

对我来说,解决方案是:

  1. 关闭模拟器程序(退出)
  2. 然后关闭打开模拟器时出现的终端窗口(Metro Bundler)我的终端窗口截图

3
停止运行节点服务器,然后再次运行“react-native run-ios”。

3

关闭当前的 Metro Bundler 并通过输入以下命令重新启动:

npm start -- --reset-cache

5
这是同一篇帖子上的重复回答。 - Jonathan Larouche
重建 Metro Bundle 是避免此错误的方法。正确的代码是 npm start --reset-cache - Mohamed Raza

3
我安装一个带有需要安装本机代码的新软件包后,通常会遇到此错误。通常,软件包会说先安装npm模块,然后通过pod install(仅限于iOS)安装本机代码,在此之后,我的应用程序通常会抛出此错误。
为了摆脱这个错误,我会删除并重新安装node_modules和pods,因为我正在制作iOS应用程序,然后还会在ios下删除build文件夹。之后,我使用npm start -- --reset-cache命令运行打包器,并再次使用react-native run-ios命令构建我的应用程序。这样就可以解决我的问题。

2
错误:无法构建iOS项目。我们运行了“xcodebuild”命令,但它以错误代码65退出。要进一步调试构建日志,请考虑使用Xcode.app构建您的应用程序,方法是打开coreApp.xcworkspace。这个开发环境真是噩梦。 - velkoon

2
在我的情况下,当我尝试使用 npm start -- --reset-cache 得到一堆错误时,我从iOS和Android上删除(卸载)该应用并使用yarn iosyarn android来解决问题。

2
在电脑重启并删除/重建npm_modules文件夹、Pods文件夹和ios build文件夹之后,我不得不创建了一个全新的react-native项目,因为这些操作都没有奏效。(退出模拟器,退出终端应用程序,退出XCode,在XCode中清理项目文件夹,并运行killall -9 node、npm start --reset-cache和npm start -- -- reset-cache也没有用)。安装完所有的包后,我将代码从旧项目复制粘贴到新项目中,但是得到同样的错误。于是我开始逐步回溯我的最近的代码更改。撤销了我最近的代码更改后,它就好了。在逐步添加新代码时,我收到了一个错误提示,告诉我忘记了import react-native;。然后我导入了它,接着添加了我之前曾经导致错误的代码(仅是一个react-native-elements按钮和一个StyleSheet const styles)。一切进展顺利。

所以,最终我的唯一推测是我一次性添加了太多的代码,而没有像应该那样告诉我我忘记了import {StyleSheet},反而给了我一个模糊而令人恼火的module AppRegistry错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接