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

2020/10/24 12:21 · javascript ·  · 0评论

我目前正在阅读React-Native教程。我从入门教程开始,在该教程中,我创建了一个新的react native项目,并成功地在设备上运行了该项目。

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

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

您已经使用一个名称启动了项目,即

react-native init AwesomeApp

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

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

当它必须

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

如果您的组件名称确实匹配,请确保您在另一个终端中没有运行任何其他react-native / node进程。

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

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

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

ps aux | grep react-native

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

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

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

MainActivity像这样修改

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

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


moduleName:@"AwesomeProject"


moduleName:@"YourNewProjectName"

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

react-native start

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

它工作正常。

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

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

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

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

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

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

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

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

lsof -i :8081

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

kill -9 <PID>

例如:-

kill -9 1653

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

react-native run-android

我遇到了同样的问题,对我而言,根本原因是我从另一个react-native文件夹(AwesomeApp)运行(反应本机启动)打包程序,而我在另一个文件夹中创建了另一个项目。

从新应用程序的目录运行打包程序即可解决该问题。

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

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

例如,点燃新的HelloWord

所有给出的答案都不适用于我。

我在另一个终端上运行了另一个节点进程,我关闭了该命令终端,一切正常。

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

像这样:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

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

我通过更改app.json文件中的以下内容解决了此问题。大写字母似乎抛出了此错误。

从:

{
  "name": "Nameofmyapp",
  ...
}

至:

{
  "name": "nameofmyapp",
  ...
}

经过2天的调试,此解决方案为我工作。改变这个:

AppRegistry.registerComponent('AppName', () => App);

AppRegistry.registerComponent('main', () => App);

与其更改名称AppRegistry

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

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

没有一个解决方案对我有用。我不得不取消以下过程,然后重新运行react-native run-android,它起作用了。

节点./local-cli/cli.js开始

我有同样的问题。我正在使用Windows创建用于Android的react native应用程序,并且遇到相同的错误。这是起作用的。

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

sdk.dir = C:\ Users \用户名\ AppData \ Local \ Android \ sdk

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

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

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

我发现问题出在哪里(Windows 10 OS),但在Linux中也可能有帮助(您可以尝试)。

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

react-native run-android

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

您无需关闭并重新打开即可 power shell运行另一个应用程序,而需要关闭 node console即可运行另一个应用程序。

阅读以上所有内容后,我发现可能还有另一个原因。

就我而言:

react-native-cli:2.0.1

反应本机:0.60.4

和以下结构:

在此处输入图片说明

首先要注意的是,当由Metro builder(react-native run-android)运行构建时,未在Android Studio中更新index.android,因此必须手动完成。另外在Android Studio中不会“读取”

app.json(默认情况下与index.js一起创建,并将其重命名为index.android.js):

 {
    "name": "authApp",
    "displayName": "authApp"
 }

所以像

(以我为例)

import {authApp as appName} from './app.json';

导致android studio不知道authApp指的事实。我暂时解决了使用字符串名称引用应用程序名称的问题,而不是使用app.json中的导入:

AppRegistry.registerComponent('authApp', () => MyApp);

这为我解决了

AppRegistry.registerComponent('main', () => App);

所以我的index.js档案

import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('main', () => App);

而我的package.json文件:

"dependencies": {
    "react": "^16.13.1",
    "react-dom": "~16.9.0",
    "react-native": "~0.61.5"
},

我的问题是inAndroidManifest.xmlMainActivity.java程序包名称不同。所以我在清单package=com.companyName.appName和活动中package com.appName

就我而言,如果有人需要,我有另一种解决方案

yarn remove react-native-material-dropdown

安装新软件包react-native-material-dropdown-v2

yarn add react-native-material-dropdown-v2

在代码中将react-native-material-dropdown替换为react-native-material-dropdown-v2

例如,从'react-native-material-dropdown'导入{Dropdown}以从'react-native-material-dropdown-v2'导入{Dropdown}

另一件事==========

  1. 打开node_modules,然后搜索
    react-native-material-textfield,打开文件并转到src文件夹
  2. 在src下,您会看到affix,helper,label文件夹-每个文件夹下都有一个index.js
  3. 依次打开提到的文件夹(所有3个文件夹)的index.js并搜索文本样式:Animated.Text.propTypes.style,然后将其替换为样式:Text.propTypes
  4. 并像这样从'react-native'导入{Animated,Text}来导入文本形式的react-native;
本文地址:http://javascript.askforanswer.com/react-nativeyingyongchengxushangweizhucecuowu.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!