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

Ada*_*dam 150 javascript facebook reactjs react-native

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

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

Slo*_*wyn 408

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

你有一个名字inited项目,即

react-native init AwesomeApp

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

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

当它必须

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

尝试解决它.

  • 对于遇到相同问题的人,即使组件名称匹配 - >确保您没有在另一个终端中运行任何其他react-native/node进程. (88认同)
  • "香蕉"一些如何适用于Android.但它不适用于IOS. (6认同)
  • 对于想要 Bananas 而不是 AwesomeApp 的人可以更改 AppDelegate.m 文件中的 `moduleName:@"AwesemeApp"` 行 (6认同)
  • 根据我的经验,系统重新启动对事情进行了排序......听起来很奇怪。 (2认同)

Afs*_*ani 39

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

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

只需找到该过程使用:

ps aux | grep react-native
Run Code Online (Sandbox Code Playgroud)

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

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

Looking for JS files in
   /Users/afshin/Desktop/awesome-app 
Run Code Online (Sandbox Code Playgroud)


小智 30

MainActivity像这样修改,

@Override
protected String getMainComponentName() {
    return "Bananas"; // here
}
Run Code Online (Sandbox Code Playgroud)

  • 究竟!那正是我的问题所在,尽管我没有修改它,而是修改了AppRegistry.registerComponent来修改它。 (2认同)
  • +1。让我想知道为什么 CLI 会询问我是否要给 android/ios 版本一个不同的名称,因为它只会导致我的项目无法工作而我不得不将其改回来。 (2认同)

use*_*708 21

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

moduleName:@"AwesomeProject"

moduleName:@"YourNewProjectName"


Raf*_*aro 17

首先,您必须开始申请:

react-native start
Run Code Online (Sandbox Code Playgroud)

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

它工作正常.

AppRegistry.registerComponent('YourProjectName', () => YourComponentName);
Run Code Online (Sandbox Code Playgroud)


小智 10

在 index.js 中,您有以下代码:-

import {name as appName} from './app.json'; AppRegistry.registerComponent(appName, () => MyApp);

因此,如果在 app.json 中,名称定义为“AwesomeProject”,则确保其与以下内容相同:-

  1. ios/projectName/AppDelegate.m 中的模块名称:-
    moduleName:@"AwesomeProject"

  2. android/app/src/main/java/MainActivity.java 中的组件名称

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


小智 6

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

{
  "expo": {
    "sdkVersion": "27.0.0",
    "appKey": "mydojo"
  },
  "name": "mydojo",
  "displayName": "mydojo"
}
Run Code Online (Sandbox Code Playgroud)

  • 在过去的24小时内一直在处理此错误。这解决了我的问题。谢谢! (3认同)

小智 5

在我的情况下,MainActivity.java中的这一行在我使用react-native-renamecli 时错过了(来自NPM)

protected String getMainComponentName() {
    return "AwesomeApp";
}
Run Code Online (Sandbox Code Playgroud)

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


Ars*_* KV 5

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

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

lsof -i :8081

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

kill -9 <PID>

例如:-

kill -9 1653

从当前的 React Native 文件夹启动节点服务器:-

react-native run-android


Ale*_*ski 5

我通过更改 app.json 文件中的以下内容解决了这个问题。看起来大写字母引发了这个错误。

从:

{
  "name": "Nameofmyapp",
  ...
}
Run Code Online (Sandbox Code Playgroud)

到:

{
  "name": "nameofmyapp",
  ...
}
Run Code Online (Sandbox Code Playgroud)