it-swarm.cn

React-Native:应用程序尚未注册错误

我目前正在阅读React-Native教程。我从入门教程开始,在那里我做了一个新的反应原生项目并成功设法在我的设备上运行项目。

然后我启动了 Props教程 ,我复制了代码片段并尝试再次运行该项目,并在屏幕上显示以下错误消息:

124
Adam

我想这是由于不匹配项目名称和您注册的组件而导致的错误。

你有一个名字inited项目,即.

react-native init AwesomeApp

但是在index.ios.js文件中,您注册了其他组件

AppRegistry.registerComponent('Bananas', () => Bananas);

当它 必须

AppRegistry.registerComponent('AwesomeApp', () => Bananas);

尝试解决它。

353
Konstantin Yakushin

大多数情况下,问题是你有另一个react-native start(即React Native Packager)服务器在另一个终端或TMUX的另一个选项卡上运行(如果你使用的是TMUX)。

您需要找到该进程并将其关闭,因此在运行react-native run-ios之后,它将建立一个为该特定应用程序注册的新打包服务器。

只需找到该过程使用:

ps aux | grep react-native

找到进程ID(PID)并使用kill命令(例如kill -9 [PID])终止打包程序进程。您应该在macOS中找到launchPackager.command应用程序,不确定其他操作系统。

然后尝试再次运行run-ios(或Android)。您应该能够在运行新的打包程序服务器后看到新路径,例如:

Looking for JS files in
   /Users/afshin/Desktop/awesome-app 
37
Afshin Mehrabani

像这样修改MainActivity

@Override
protected String getMainComponentName() {
    return "Bananas"; // here
}
22
Daniyar Saumbayev

我的解决方案是“AppDelegate.m”中的更改模块名称

来自moduleName:@"AwesomeProject"

moduleName:@"YourNewProjectName"

13
user8637708

首先,您必须开始申请:

react-native start

然后,您必须将应用程序名称设置为registerComponent的第一个参数。

它工作正常。

AppRegistry.registerComponent('YourProjectName', () => YourComponentName);
12
Rafael Ferraro

在我的情况下,当我使用react-native-rename cli(来自NPM)时,MainActivity.Java中的这一行被遗漏了

protected String getMainComponentName() {
    return "AwesomeApp";
}

显然你必须将它重命名为你的应用程序的名称。

5
xemasiv

我有同样的问题,对我来说,根本原因是我从另一个react-native文件夹(AwesomeApp)运行(react-native start)打包器,而我在另一个文件夹中创建了另一个项目。

从新应用程序的目录运行打包程序解决了它。

3
la5zl0

请检查项目中的app.json文件。如果没有行appKey,那么你必须添加它

{
  "expo": {
    "sdkVersion": "27.0.0",
    "appKey": "mydojo"
  },
  "name": "mydojo",
  "displayName": "mydojo"
}
3
mperk

我认为节点服务器正在从另一个文件夹运行。所以杀了它并在当前文件夹中运行。

查找正在运行的节点服务器: /

lsof -i :8081

杀死正在运行的节点服务器: /

kill -9 <PID>

例如:-

kill -9 1653

从当前响应本机文件夹启动节点服务器: /

react-native run-Android

2
Arshid KV

你需要 在index.Android.js/index.ios.js中注册

像这样:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

AppRegistry.registerComponent('test', () => app);
1
linSir

所有给出的答案对我都不起作用。

我有另一个节点进程在另一个终端运行,我关闭了该命令终端,一切按预期工作。

1
Khemraj

这也可能是由于根组件名称以小写字母开头。

更正它或者使用PascalCase名称再次创建项目。

例如点燃新的HelloWord

1
Venkat

这个问题也会出现 当你在index.js中使用与你为Android/ios软件包提供的名称不同的方式命名应用程序时 ;可能这发生在你弹出应用程序时。所以请确保在调用AppRegistry.registerComponent('someappname', () => App)时,someappname也用于本机包或反之亦然。

1
gavri

我有同样的问题。我正在使用Windows为Android创建一个react本机应用程序并且遇到了同样的错误。这是有效的。

  • 导航到根目录中的文件夹 Android
  • 创建一个名称为的文件: local.properties
  • 在编辑器中打开它并写:

sdk.dir = C:\ Users\ USERNAME \AppData\Local\Android\sdk

  • 将USERNAME替换为您的计算机名称。

正常保存并运行应用程序。这对我有用。

0
Utsav Chawla

而不是更改AppRegistry中的名称,

运行react-native init Bananas,这将为Bananas项目创建反应样板代码,AppRegistry.registerComponent将自动指向香蕉

AppRegistry.registerComponent('Bananas', () => Bananas);
0
vipul srivastav

我想出了问题所在的位置(Windows 10操作系统),但它也可能对Linux有帮助(你可能会尝试)。

windows power Shell中,当您想通过执行以下命令运行应用程序(首次启动电脑后),

react-native run-Android

它在另一个node process/JS server中启动console panel,您不会遇到此错误。但是,当你想要运行 另一个应用程序 ,你 必须 需要 关闭 那个 已经在运行 JS server console panel。然后从power Shell为另一个应用程序执行相同的命令,该命令将自动启动另一个 new JS服务器 为此应用程序,您将不会遇到此错误。

你不需要 关闭并重新打开 power Shell来运行另一个应用程序,你需要 关闭 node console来运行另一个应用程序。

0
Shamsul Arefin Sajib

没有解决方案适合我。我不得不杀死以下进程并重新运行react-native run-Android并且它有效。

node ./local-cli/cli.js start

0
G. Thabit