Ik ben momenteel bezig met de React-Native tutorials. Ik begon met de zelfstudie Aan de slag, waar ik een nieuw reactie-native project heb gemaakt en het project met succes op mijn apparaat heb kunnen uitvoeren.
Ik ben toen begonnen met de Props-tutorial, ik heb het codefragment gekopieerd en probeerde het project opnieuw uit te voeren en kreeg de volgende foutmelding op mijn scherm:
Antwoord 1, autoriteit 100%
Ik vermoed dat het een fout is die wordt veroorzaakt doordat de naam van het project en uw geregistreerde component niet overeenkomen.
Je hebt een project gestart met één naam, d.w.z.
react-native init AwesomeApp
Maar in uw index.ios.js-bestand registreert u een ander onderdeel
AppRegistry.registerComponent('Bananas', () => Bananas);
Wanneer het moetzijn
AppRegistry.registerComponent('AwesomeApp', () => Bananas);
Als de naam van je component overeenkomt, zorg er dan voor dat er geen ander reactie-native/node-proces in een andere terminal draait.
Antwoord 2, autoriteit 10%
Meestal is het probleem dat je een andere react-native start
(dwz React Native Packager) server hebt die draait op een andere terminal of op een ander tabblad van TMUX (als je TMUX gebruikt).
Je moet dat proces vinden en sluiten, dus na het uitvoeren van bijvoorbeeld react-native run-ios
, zal het een nieuwe packager-server tot stand brengen die zich voor die specifieke applicatie heeft geregistreerd.
Zoek dat proces gewoon op met:
ps aux | grep react-native
vind de proces-ID (PID) en stop het proces van de packager met behulp van de opdracht kill
(bijv. kill -9 [PID]
). Je zou de app launchPackager.command
in macOS moeten vinden, niet zeker over de andere besturingssystemen.
Probeer vervolgens de run-ios
(of Android) opnieuw uit te voeren. U zou het nieuwe pad moeten kunnen zien nadat u de nieuwe packager-server heeft uitgevoerd, bijvoorbeeld:
Looking for JS files in
/Users/afshin/Desktop/awesome-app
Antwoord 3, autoriteit 9%
Wijzig MainActivity
in android/app/src/main/java/com/your-package-name/MainActivity.java
als volgt,
@Override
protected String getMainComponentName() {
return "Bananas"; // here
}
Antwoord 4, autoriteit 9%
Mijn oplossing is het wijzigen van de modulenaam in “AppDelegate.m”
van
moduleName:@"AwesomeProject"
naar
moduleName:@"YourNewProjectName"
Antwoord 5, autoriteit 4%
Allereerst moet u uw aanvraag starten:
react-native start
Vervolgens moet u uw toepassingsnaam instellen als het eerste argument van registerComponent.
Het werkt prima.
AppRegistry.registerComponent('YourProjectName', () => YourComponentName);
Antwoord 6, autoriteit 2%
In mijn geval is er deze regel in MainActivity.java die werd gemist toen ik react-native-rename
cli (van NPM)
gebruikte
protected String getMainComponentName() {
return "AwesomeApp";
}
Je moet het natuurlijk hernoemen naar de naam van je app.
Antwoord 7, autoriteit 2%
Controleer uw app.json-bestand in het project. als er geen regel appKey is, moet u deze toevoegen
{
"expo": {
"sdkVersion": "27.0.0",
"appKey": "mydojo"
},
"name": "mydojo",
"displayName": "mydojo"
}
Antwoord 8
Ik heb dit opgelost door het volgende in het app.json-bestand te wijzigen. Het lijkt erop dat de hoofdletter deze fout veroorzaakte.
Van:
{
"name": "Nameofmyapp",
...
}
Aan:
{
"name": "Nameofmyapp",
...
}
Antwoord 9
Ik denk dat de node-server vanuit een andere map draait. Dus dood het en voer het uit in de huidige map.
Zoek een draaiende node-server:-
lsof -i :8081
Dood draaiende node-server:-
kill -9 <PID>
Bijvoorbeeld:-
kill -9 1653
Start node-server vanuit de huidige native react-map:-
react-native run-android
Antwoord 10
Ik had hetzelfde probleem en voor mij was de hoofdoorzaak dat ik de packager uitvoerde (react-native start) vanuit een andere react-native map (AwesomeApp), terwijl ik een ander project in een andere map maakte.
Het uitvoeren van de packager vanuit de map van de nieuwe app loste het op.
Antwoord 11
In index.js heb je de volgende code:-
import {name as appName} from './app.json';
AppRegistry.registerComponent(appName, () => MyApp);
Dus als in app.json de naam is gedefinieerd als “AwesomeProject”, zorg er dan voor dat dit hetzelfde is als het volgende:-
-
modulenaam in ios/projectName/AppDelegate.m :-
moduleName:@"AwesomeProject"
-
componentnaam in android/app/src/main/java/MainActivity.java
@Override
protected String getMainComponentName() {
return "AwesomeProject"; // here
}
Antwoord 12
Deze oplossing werkte voor mij na 2 dagen debuggen.
Verander dit:
AppRegistry.registerComponent('AppName', () => App);
naar
AppRegistry.registerComponent('main', () => App);
Antwoord 13
Dit kan ook komen doordat de naam van de rootcomponent met kleine letters begint.
Corrigeer het of maak het project liever opnieuw aan met een PascalCase-naam.
bijv. ontsteek nieuwe HelloWord
Antwoord 14
Alle gegeven antwoorden werkten niet voor mij.
Ik had een ander knooppuntproces lopen in een andere terminal, ik sloot die opdrachtterminal en alles werkte zoals verwacht.
Antwoord 15
je moet het registrerenin index.android.js / index.ios.js
zoals dit:
'use strict';
import {
AppRegistry
} from 'react-native';
import app from "./app";
AppRegistry.registerComponent('test', () => app);
Antwoord 16
Dit heeft het voor mij opgelost
AppRegistry.registerComponent('main', () => App);
Dus mijn index.js
-bestand
import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('main', () => App);
En mijn bestand package.json
:
"dependencies": {
"react": "^16.13.1",
"react-dom": "~16.9.0",
"react-native": "~0.61.5"
},
Antwoord 17
Voor mij was het probleem eenvoudig.
Gemaakt project a -> alles werkte
Gemaakt project b -> kwam deze fout tegen
metro was nog steeds actief met het tijdelijke pad naar de andere toepassing. In mijn geval was de oplossing zo simpel als het sluiten van het metroproces en het opnieuw laten opstarten
18
Als u bij Expo bent, moet u de modulenaam niet wijzigen in appdelegat.m en in GetMainComponentName (), de standaardnaam door RegisterRotcomponent (App) is “Main”, dus het moet “Main”
blijven
19
Naam wijzigen en Properties weergeven in app.json met nieuwere naam