Javascript 反应本机:应用程序尚未注册错误

Javascript 反应本机:应用程序尚未注册错误,javascript,facebook,reactjs,react-native,Javascript,Facebook,Reactjs,React Native,我目前正在学习React本机教程。我从入门教程开始,在那里我创建了一个新的react原生项目,并成功地在我的设备上运行了该项目 然后,我启动了,复制了代码段并尝试再次运行该项目,屏幕上显示了以下错误消息: 我想这是由于项目名称和您注册的组件不匹配而导致的错误 您已使用一个名称初始化项目,即 react native init AwesomeApp 但在index.ios.js文件中注册了其他组件 AppRegistry.registerComponent('Bananas',()=>Banana

我目前正在学习React本机教程。我从入门教程开始,在那里我创建了一个新的react原生项目,并成功地在我的设备上运行了该项目

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


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

您已使用一个名称初始化项目,即

react native init AwesomeApp

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

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

必须的时候

AppRegistry.registerComponent('AwesomeApp',()=>香蕉)


如果组件名称不匹配,请确保没有任何其他react本机/节点进程在另一个终端中运行。

而不是在
AppRegistry
中更改名称

运行react native init Bananas,这将为Bananas项目创建react样板代码,并且
AppRegistry.registerComponent
将自动指向Bananas

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

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


从新应用程序的目录运行打包程序解决了这个问题。

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

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

只需使用以下方法查找该流程:

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

然后再次尝试运行
运行ios
(或android)。运行新的packager服务器后,您应该能够看到新路径,例如:

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

像这样修改
MainActivity

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

首先,您必须启动应用程序:

react-native start
然后,必须将应用程序名称设置为registerComponent的第一个参数

它很好用

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

您需要在index.android.js/index.ios.js中注册它

像这样:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

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

这也可能是因为根组件名称以小写字母开头

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


e、 g.点燃新HelloWord

在我的例子中,MainActivity.java中有一行,当我使用
react native rename
cli(来自NPM)时,该行被遗漏了


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

所有给出的答案对我来说都不适用


我在另一个终端上运行了另一个节点进程,我关闭了那个命令终端,一切都按预期运行。

没有一个解决方案对我有效。我不得不终止下面的进程,重新运行react native run android,它成功了

node./local cli/cli.js start

我也遇到了同样的问题。 我使用Windows为android创建了一个react本机应用程序,但出现了相同的错误。以下是有效的方法

  • 导航到根目录中的文件夹ANDROID
  • 创建名为:local.properties的文件
  • 在编辑器中打开它并编写:
sdk.dir=C:\Users\USERNAME\AppData\Local\Android\sdk

  • 将用户名替换为计算机的名称

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

当您在index.js中为应用程序命名时,该问题也会出现,与您为android/ios软件包命名时的名称不同;这可能是在您弹出应用程序时发生的。因此,请确保在调用AppRegistry.registerComponent('someappname',()=>App)
时,someappname也用于本机软件包或反之亦然。

我认为节点服务器是从另一个文件夹运行的。因此,杀死它并在当前文件夹中运行

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

lsof-i:8081

终止正在运行的节点服务器:-

kill-9

例如:-

kill-91653

从当前本地文件夹启动节点服务器:-


react native run android

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

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

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

moduleName:@“AwesomeProject”


moduleName:@“YourNewProjectName”
我发现了我的情况(Windows 10操作系统)中的问题所在,但在Linux中也可能有所帮助(您可以尝试)

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

react-native run-android
它在另一个
控制台面板中启动
节点进程/JS服务器
,您不会遇到此错误。但是,当你想运行另一个应用程序时,你必须关闭已经运行的JS服务器控制台面板。然后从
power shell
为另一个应用程序执行相同的命令,该命令将自动为该应用程序启动另一个新JS服务器,您不会遇到此错误

运行另一个应用程序不需要关闭并重新打开
power shell
,运行另一个应用程序需要关闭
节点控制台

react-native run-android
 {
    "name": "authApp",
    "displayName": "authApp"
 }
import {authApp as appName} from './app.json';
AppRegistry.registerComponent('authApp', () => MyApp);
{
  "name": "Nameofmyapp",
  ...
}
{
  "name": "nameofmyapp",
  ...
}
AppRegistry.registerComponent('main', () => App);
import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('main', () => App);
"dependencies": {
    "react": "^16.13.1",
    "react-dom": "~16.9.0",
    "react-native": "~0.61.5"
},
AppRegistry.registerComponent('AppName', () => App);
AppRegistry.registerComponent('main', () => App);
yarn remove react-native-material-dropdown
yarn add react-native-material-dropdown-v2