Javascript 反应本机:应用程序尚未注册错误
我目前正在学习React本机教程。我从入门教程开始,在那里我创建了一个新的react原生项目,并成功地在我的设备上运行了该项目 然后,我启动了,复制了代码段并尝试再次运行该项目,屏幕上显示了以下错误消息: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 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