web-dev-qa-db-ja.com

React-Native:アプリケーションは登録されていませんエラー

私は現在React-Nativeチュートリアルを進めています。私はGetting Startedチュートリアルから始めました。そこでは私は新しいreactネイティブプロジェクトを作り、そして私のデバイス上でそのプロジェクトをうまく実行することに成功しました。

その後、 Propsチュートリアル を開始しました。コードスニペットをコピーしてプロジェクトをもう一度実行しようとすると、次のエラーメッセージが画面に表示されました。

134
Adam

私はそれがプロジェクトの名前とあなたの登録されたコンポーネントとが一致しないことによって引き起こされたエラーであると思います。

プロジェクトに1つの名前を付けてプロジェクトを開始しました。

react-native init AwesomeApp

しかし、index.ios.jsファイルに他のコンポーネントを登録します。

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

それがなければならないとき

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

修正してみてください。

369

ほとんどの場合、問題は別の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 
37

MainActivityをこのように修正してください。

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

私の解決策は "AppDelegate.m"のモジュール名を変更することです

moduleName:@"AwesomeProject"から

moduleName:@"YourNewProjectName"

14
user8637708

まず第一にあなたはあなたのアプリケーションを起動しなければなりません:

react-native start

次に、アプリケーション名をregisterComponentの最初の引数として設定する必要があります。

それはうまくいきます。

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

私の場合、MainActivity.Javaにこの行があります。これは、react-native-rename cli(NPMから)を使用したときに見逃していました

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

明らかにあなたのアプリの名前に変更しなければなりません。

5
xemasiv

私は同じ問題を抱えていました、そして私のための根本的な原因は私が他のフォルダーの中に別のプロジェクトを作成している間私が別の反応のネイティブフォルダー(AwesomeApp)からパッケージャーを走らせたことです。

新しいアプリのディレクトリからパッケージャを実行することで解決しました。

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 packageに付けた名前とは異なる名前でアプリに名前を付けた場合、おそらくこれはアプリを削除したときに発生した可能性があります。 AppRegistry.registerComponent('someappname', () => App)を呼び出すとき、someappnameはネイティブパッケージやその逆にも使われます。

1
gavri

上記のすべてを読んだ後、これには別の理由がある可能性があることがわかりました。

私の場合:

反応ネイティブCLI:2.0.1

反応ネイティブ:0.60.4

そして次の構造:

enter image description here

まず、Metroビルダー(react-native run-Android)でビルドを実行する場合、index.AndroidはAndroid St​​udioで更新されないため、手動で実行する必要があることに注意する必要があります。また、Androidスタジオでは、

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);
0
Carmine

私は同じ問題を抱えていました。私はAndroid用の反応ネイティブアプリを作成するためにWindowsを使用していて、同じエラーを抱えていました。これがうまくいったことです。

  • ルートのフォルダAndroidに移動します。
  • 名前を付けてファイルを作成します。local.properties
  • エディタでそれを開いて書いてください:

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

  • USERNAMEをあなたのマシンの名前に置き換えてください。

アプリを保存して通常どおり実行します。それは私のために働いた。

0
Utsav Chawla

AppRegistryの名前を変更するのではなく、

React-native init Bananasを実行します。これはBananasプロジェクト用のreactボイラープレートコードを作成し、AppRegistry.registerComponentは自動的にbananasを指すようになります。

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

私の場合はどこに問題があるのか​​を突き止めました(Windows 10 OS)が、それはLinuxでも助けになるかもしれません(あなたも試してみるかもしれません)。

windows power Shellで、次のコマンドを実行してアプリを実行したい場合(PC起動後の初回)、

react-native run-Android

それは別のnode process/JS serverconsole panelを始めます、そして、あなたはこのエラーに遭遇しません。しかし、あなたが他のアプリを走らせたい必要があるそれを閉じるはすでに実行中ですJS server console panel。それからpower Shellから別のアプリに対して同じコマンドを実行すると、そのコマンドは自動的にこのアプリのための別の新しいJSサーバーを起動します。このエラーは発生しません。

別のアプリを実行するためにpower Shellを閉じて再度開く必要はありません。別のアプリを実行するためにclosenode consoleする必要があります。

解決策のどれも私のために働いた。私は次のプロセスを強制終了し、react-native run-Androidを実行しなければなりませんでした。

node ./local-cli/cli.js start

0
G. Thabit