React-Native:アプリケーションが登録されていないエラー


166

私は現在、React-Nativeチュートリアルを行っています。はじめにチュートリアルから始めました。そこでは、新しいreactネイティブプロジェクトを作成し、デバイスでプロジェクトを正常に実行することができました。

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


コードを共有できますか?
Jagadish Upadhyay

回答:


435

プロジェクトの名前と登録されているコンポーネントが一致しないために発生したエラーだと思います。

つまり、1つの名前でプロジェクトを開始しました。

react-native init AwesomeApp

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

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

それはときにしなければならないこと

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

修正してみてください。


7
「バナナ」の一部はAndroidで機能します。しかし、それはIOSではありません。
Sumit Kushwaha 2016年

92
コンポーネント名が一致していても同じ問題に直面している人のために->他のターミナルで実行されている他のreact-native / nodeプロセスがないことを確認してください。
Nilesh

1
私の経験では、システムを再起動すると、物事がソートされました...
Kayote、16

このチュートリアルは現在「AwesomeProject」と呼ばれています
AdamG '22

2
AwesomeAppの代わりにバナナが必要な人moduleName:@"AwesemeApp"は、AppDelegate.mファイルの行を変更できます
Aequitas

42

ほとんどの場合、問題は、react-native start別のターミナルまたはTMUXの別のタブ(TMUXを使用している場合)で別の(つまりReact Native Packager)サーバーを実行していることです。

そのプロセスを見つけて閉じる必要があるため、react-native run-iosたとえば、実行した後、その特定のアプリケーションに登録された新しいPackagerサーバーが確立されます。

次の方法でそのプロセスを見つけてください。

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 

それは私が実行しても、作品react-native start --port <otherport>、私は実行する必要がありreact-native run-<platform>、別の方法で?感謝
セバスチャン・パルマ

@SebastiánPalma私の知る限り、このstartコマンドはパッケージャサーバーを実行するため、すでにアプリケーションをコンパイルしている場合は、を実行する必要はありませんrun-<platform>
Afshin Mehrabani 2017

31

MainActivityこのように変更し、

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

2
丁度!これがまさに私の問題でしたが、これを変更する代わりに、AppRegistry.registerComponentをそのように変更しました
Sijav

Iosはどうですか?
Dinesh R Rajput

+1。プロジェクトが機能せず、変更する必要がある場合に、CLIがandroid / iosバージョンに別の名前を付けるかどうかを尋ねるのはなぜですか?
タッチ

私はapp.jsを変更しました
ロール

28

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

から moduleName:@"AwesomeProject"

moduleName:@"YourNewProjectName"


これで問題が解決しました。ありがとう!
Cory McAboy、2018年

React NativeからiOSシミュレーターを実行している私のために働いた!
エミリオ

うん、それは私を助けます。追加のヒント:あなたはXCodeのを使用する場合は、必ず、あなたのApp-名に右の名前を設定している作る(プロジェクト- >ターゲット- >のDisplayName)
suther

17

まず、アプリケーションを起動する必要があります。

react-native start

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

正常に動作します。

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

8

プロジェクトのapp.jsonファイルを確認してください。appKeyの行がない場合は、追加する必要があります

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

3
このエラーに過去24時間干渉しました。これで問題が解決しました。ありがとう!
Balaji Kartheeswaran

7

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

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

もちろん、名前をアプリの名前に変更する必要があります。


4

ノードサーバーは別のフォルダーから実行されていると思います。だからそれを殺して、現在のフォルダーで実行してください。

実行中のノードサーバーを検索:-

lsof -i :8081

実行中のノードサーバーを強制終了します:-

kill -9 <PID>

例えば:-

kill -9 1653

現在の反応ネイティブフォルダーからノードサーバーを起動します。

react-native run-android


3

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

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


1

これは、ルートコンポーネント名が小文字で始まるためである可能性もあります。

修正するか、PascalCase名でプロジェクトをもう一度作成してください。

例:新しいHelloWordに点火する


1

与えられた答えはすべて私にとってうまくいきませんでした。

別のターミナルプロセスで別のノードプロセスを実行していたため、そのコマンドターミナルを閉じたところ、すべて期待どおりに動作しました。


1

あなたはそれをindex.android.js / index.ios.js に登録する必要があります

このような:

'use strict';

import {
    AppRegistry
} from 'react-native';

import app from "./app";

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

1

app.jsonファイルで以下を変更することにより、これを解決しました。大文字がこのエラーをスローしていたようです。

から:

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

に:

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

0

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

react-native init Bananasを実行します。これにより、Bananasプロジェクトの反応定型コードが作成AppRegistry.registerComponentされ、自動的にバナナをポイントします

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

0

解決策のどれも私にとってはうまくいきませんでした。次のプロセスを強制終了して、react-native run-androidを再実行しなければなりませんでした。

node ./local-cli/cli.js start


1
次のプロセスはどれですか?
bigmadwolf

@bigmadwolf node ./local-cli/cli.js start
G. Thabit

0

私も同じ問題を抱えていました。私はWindowsを使用してAndroid対応のネイティブアプリを作成していましたが、同じエラーが発生していました。これがうまくいきました。

  • ルートのANDROIDフォルダーに移動します。
  • 名前がlocal.propertiesのファイルを作成します
  • エディターで開き、次のように記述します。

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

  • USERNAMEをご使用のマシンの名前に置き換えます。

アプリを保存して通常どおり実行します。それでうまくいきました。


0

この問題は、index.jsでアプリにandroid / iosパッケージに付けた名前とは異なる名前を付けた場合にも発生します。おそらくこれは、アプリをイジェクトしたときに発生しました。したがって、を呼び出すときはAppRegistry.registerComponent('someappname', () => App)、someappnameがネイティブパッケージにも使用されていること、またはその逆であることを確認して ください。


0

私の場合(Windows 10 OS)のどこに問題があるのか​​がわかりましたが、Linuxでも同様に役立つ場合があります(試してみてください)。

windows power shell、次のコマンドを実行してアプリを実行する場合(PCブート後初めて)、

react-native run-android

node process/JS serverconsole panelので始まり、このエラーは発生しません。ただし、別のアプリを実行する場合すでに実行中のアプリ閉じる必要があります。次に、から別のアプリに対して同じコマンドを実行すると、そのコマンドによってこのアプリの別の新しい JSサーバーが自動的に起動され、このエラーは発生しません。 JS server console panelpower shell

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


0

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

私の場合:

反応ネイティブcli:2.0.1

反応ネイティブ:0.60.4

そして以下の構造:

ここに画像の説明を入力してください

最初に注意する必要があるのは、Metroビルダー(react-native run-android)によってビルドが実行されると、Android Studioでindex.androidが更新されないため、手動で実行する必要があることです。また、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

これで解決しました

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"
},

0

このソリューションは、2日間のデバッグの後、私にとってはうまくいきました。これを変える :

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

AppRegistry.registerComponent('main', () => App);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.