Dafür bin ich wieder in dieser Anwendung, an der wir gearbeitet haben, dieser Zielanwendung, in der wir hier einige
Ziele hinzufügen können, und dies ist der Code, den wir dort geschrieben haben. Ich habe dort nichts geändert.
Lassen Sie mich nun die verschiedenen Dinge vorstellen, die schief gehen könnten, und wie Sie sie beheben.
Beginnen wir also einfach,
sagen wir, wir haben einen einfachen Syntaxfehler. Hier öffnen wir unser Modal am Ende, indem wir den Add-Modus auf
true setzen.
Lassen Sie mich diese schließende Klammer entfernen. Das ist ein klarer Syntaxfehler, den wir können und
den wir unbedingt vermeiden sollten, weil wir als Entwickler einen klaren Fehler gemacht haben.
Nun ist das Gute, dass sogar unsere IDE dies erkennt und uns hier eine Warnung gibt, obwohl der hier
angezeigte Fehler leider nicht ganz korrekt ist.
Es heißt, dass ein Komma erwartet wird. Nun, eigentlich
ist das nicht das eigentliche Problem, das eigentliche Problem ist ein fehlende Klammer.
Trotzdem haben wir eine Vorstellung davon, dass hier etwas
nicht stimmt, und obwohl Sie immer noch über das Problem nachdenken müssen und diese Lösung nicht blind verwenden können, indem
Sie sich diesen Code ansehen, sollten Sie irgendwann herausfinden, dass eine Klammer fehlt.
Selbst wenn Sie dies vergessen und dies speichern, wird das Javascript-Bundle hier erstellt. Wie Sie sehen, habe
ich dies sowohl auf Android als auch auf iOS gestartet. Jetzt erhalten wir diesen roten Fehlerbildschirm, über den
ich gesprochen habe, und hier
erneut. Wir können einfach die Fehlermeldung lesen.
Es zeigt uns immer noch auf die falsche Lösung und erwartet ein Komma, aber es zeigt uns auf
die richtige Codezeile. Hier sehen Sie, dass dieser Schaltflächentitel eine neue Ziellinie hinzufügt, sodass wir immer noch sehen, wo wir
suchen sollten und dass das Problem liegt wahrscheinlich aus dieser Linie.
Wir bekommen übrigens den gleichen Fehler hier in dieser Konsole und auch in unseren Expo-Entwicklungstools hier. Dort sehen Sie die gleiche Fehlermeldung auch
mit einem Hinweis auf die Zeile, von der dieser Fehler stammt, so dass Sie eine
Menge bekommen Hilfe zum Aufspüren dieses Problems. Jetzt hier ist es leider immer noch nicht
aufgefallen, dass ich diesen Fehler behoben habe und daher sehen wir hier, dass er abgestürzt ist, auf iOS
unter Android wird er nicht
neu geladen. Jetzt auf Android sehen
wir einen Befehl, mit dem wir die App neu laden
können. Wir können dort nach unten klicken oder zweimal r drücken, um die App neu zu laden, aber die Änderung wird hier immer noch nicht übernommen,
obwohl ich sie im Code behoben habe.
Eine Lösung hier ist also Stoppen Sie einfach das Paket oder starten Sie npm start neu.
Dies kommt selten vor, aber manchmal bricht dies ab, und dann ist es einfach, diesen npm-Startvorgang einfach neu zu
starten. Damit starte ich
ihn auf Android erneut, indem ich a drücke, und auf iOS, indem ich i drücke. Jetzt sollte die App
auf diesen Geräten neu gestartet werden .
Auch dies passiert selten, aber manchmal passiert es einfach und Sie können es einfach neu starten,
damit es wieder richtig funktioniert.
Lassen Sie mich Ihnen ein Beispiel für eine Fehlermeldung zeigen, die angezeigt wird, wenn Sie keinen
Syntaxfehler haben, aber dennoch einen eindeutigen Fehler in Ihrem Code haben.
Angenommen, wenn wir hier ein Ziel mit dem Zieltitel hinzufügen, fügen wir eine Prüfung hinzu, bei der festgestellt wird, ob die Länge des Zieltitels größer als
Null ist, um zu überprüfen, ob der Wert nicht leer ist oder tatsächlich gleich Null ist, was bedeutet, dass der Benutzer
dies nicht getan hat. Wenn Sie keinen
Titel eingeben, kehren wir einfach zurück. Dies bedeutet, dass wir dieses Ziel hier nicht hinzufügen und das Modal auch
nicht schließen. Daher
ignorieren wir nur die Benutzereingaben, da diese leer sind.
Möglicherweise möchten wir eine
Fehlermeldung anzeigen, aber im Moment machen wir es einfach so.
Wenn wir das jetzt tun,
wird
es hier im Allgemeinen gut funktionieren, oder? Wenn ich das speichere und wir hierher zurückkehren, es öffnen und auf Hinzufügen klicken, sehen Sie,
dass ich kein leeres Ziel hinzufügen kann. Ich muss etwas eingeben, damit dies verschwindet.
Nehmen wir nun in unserer Zieleingabekomponente an, wo wir Benutzereingaben abrufen, wo wir sie dann
weiterleiten, indem wir hier auf Ziel hinzufügen klicken. Wir vergessen dies, wir leiten hier null weiter oder wir leiten nichts weiter, weil
wir einfach vergessen haben, dies hier hinzuzufügen. Jetzt startet unsere App einwandfrei, sie bricht
nicht sofort, weil wir keinen eindeutigen Fehler in unserem Code haben, keinen Syntaxfehler, aber wenn ich hier etwas eingebe und auf Hinzufügen klicke,
werde ich undefiniert, ist kein Objekt, bewertet die Länge des
Zieltitels und Auch dies ist eine Fehlermeldung, die uns hilft.
Es informiert uns, dass das Problem etwas damit zu tun hat, dass etwas nicht definiert ist, und dass es
mit dieser Überprüfung der Zieltitellänge zusammenhängt. Dann
können Sie an die Stelle eintauchen, an der Sie auf die Zieltitellänge zugreifen und das Problem aufspüren.
Wir haben also Probleme, die Länge des Zieltitels zu ermitteln, da er anscheinend nicht definiert ist. Wir bekommen es hier, also ist der Fehler
sicherlich
nicht hier, aber gehen wir zu der Stelle, an der am Ende der Add-Goal-Handler
aufgerufen wird.
Wenn Sie sich erinnern, geben wir dies hier bei der Zieleingabe an die Requisite zum Hinzufügen von Zielen weiter. Daher
sollten wir wahrscheinlich zur Zieleingabe gehen, die Sie übrigens auch ausführen können, indem Sie den Befehl oder die
Steuerung gedrückt halten und auf den Komponentennamen klicken. Nun, da drin rufen wir hier zum Hinzufügen von Zielen auf und oh, hier sehen wir, was der Fehler ist. In diesem Fall habe ich diesen Fehler
natürlich hier konstruiert, aber Sie verstehen natürlich, dass dies ein Fehler ist,
den Sie sicherlich in Ihrem Code haben könnten, wenn Sie vergessen haben, ihn hinzuzufügen, wenn Sie möglicherweise
die Funktionsweise Ihres Codes ändern und vergessen haben, ihn anzupassen es an allen Stellen und daher erhalten
Sie plötzlich diesen Fehler.
Jetzt hat uns die Fehlermeldung geholfen, das Problem zu finden.