私は現在、React-Nativeチュートリアルを行っています。はじめにチュートリアルから始めました。そこでは、新しいreactネイティブプロジェクトを作成し、デバイスでプロジェクトを正常に実行することができました。
次に、Propsチュートリアルを開始し、コードスニペットをコピーしてプロジェクトを再度実行しようとしたところ、次のエラーメッセージが画面に表示されました。
私は現在、React-Nativeチュートリアルを行っています。はじめにチュートリアルから始めました。そこでは、新しいreactネイティブプロジェクトを作成し、デバイスでプロジェクトを正常に実行することができました。
次に、Propsチュートリアルを開始し、コードスニペットをコピーしてプロジェクトを再度実行しようとしたところ、次のエラーメッセージが画面に表示されました。
回答:
プロジェクトの名前と登録されているコンポーネントが一致しないために発生したエラーだと思います。
つまり、1つの名前でプロジェクトを開始しました。
react-native init AwesomeApp
しかし、index.ios.jsファイルで他のコンポーネントを登録します
AppRegistry.registerComponent('Bananas', () => Bananas);
それはときにしなければならないこと
AppRegistry.registerComponent('AwesomeApp', () => Bananas);
修正してみてください。
moduleName:@"AwesemeApp"
は、AppDelegate.mファイルの行を変更できます
ほとんどの場合、問題は、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>
、別の方法で?感謝
start
コマンドはパッケージャサーバーを実行するため、すでにアプリケーションをコンパイルしている場合は、を実行する必要はありませんrun-<platform>
。
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"
}
app.jsonファイルで以下を変更することにより、これを解決しました。大文字がこのエラーをスローしていたようです。
から:
{
"name": "Nameofmyapp",
...
}
に:
{
"name": "nameofmyapp",
...
}
で名前を変更するのではなくAppRegistry
、
react-native init Bananasを実行します。これにより、Bananasプロジェクトの反応定型コードが作成AppRegistry.registerComponent
され、自動的にバナナをポイントします
AppRegistry.registerComponent('Bananas', () => Bananas);
解決策のどれも私にとってはうまくいきませんでした。次のプロセスを強制終了して、react-native run-androidを再実行しなければなりませんでした。
node ./local-cli/cli.js start
私も同じ問題を抱えていました。私はWindowsを使用してAndroid対応のネイティブアプリを作成していましたが、同じエラーが発生していました。これがうまくいきました。
sdk.dir = C:\ Users \ USERNAME \ AppData \ Local \ Android \ sdk
アプリを保存して通常どおり実行します。それでうまくいきました。
私の場合(Windows 10 OS)のどこに問題があるのかがわかりましたが、Linuxでも同様に役立つ場合があります(試してみてください)。
でwindows power shell
、次のコマンドを実行してアプリを実行する場合(PCブート後初めて)、
react-native run-android
node process/JS server
別console panel
ので始まり、このエラーは発生しません。ただし、別のアプリを実行する場合は、すでに実行中のアプリを閉じる必要があります。次に、から別のアプリに対して同じコマンドを実行すると、そのコマンドによってこのアプリの別の新しい JSサーバーが自動的に起動され、このエラーは発生しません。 JS server console panel
power shell
別のアプリを実行するために閉じ power shell
て再度開く必要はありません。別のアプリを実行するために閉じる 必要がありますnode console
。
上記をすべて読んだ後、これには別の理由がある可能性があることを発見しました。
私の場合:
反応ネイティブ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);
これで解決しました
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"
},