Fehlermeldungen erklärt
104 Fehlermeldungen — jeweils Bedeutung, Ursache und Vorgehen.
Die Lösungen haben Kosten. git reset --hard verwirft nicht committete Arbeit, ein Force-Push kann Commits von Kolleginnen zerstören, und docker system prune löscht unbenannte Volumes. Wo das zutrifft, sagt der Eintrag es.
Git29
Fast jeder git-Fehler ist eine Verweigerung im Sinne von „das aus diesem Zustand zu tun würde etwas verlieren“; fatal: heißt, git hat ohne jede Änderung abgebrochen, und die hint:-Zeilen unter der ersten enthalten meist die eigentliche Lösung.
npm20
Bei npm steht die Ursache in der ersten code-XXXX-Zeile und nicht in den letzten sechs npm-ERR!-Zeilen, und wenn der Fehler aus dem Abhängigkeitsbaum oder einem Native-Build statt aus eigenem Code kommt, löst das Löschen von node_modules mit erneuter Installation etwa die Hälfte.
JavaScript15
Browser- und Node-Fehler nennen meist, was kaputtging, aber nicht, warum der Wert so wurde — Sie haben undefined gelesen, es war keine Funktion, es war kein JSON — die Stelle zum Reparieren liegt also stromaufwärts der werfenden Zeile, und nur diese Zeile mit ?. und Standardwerten stillzulegen lässt dasselbe Problem weiter entfernt und in schwerer erkennbarer Gestalt wiederkehren.
Python18
Ein Python-Traceback teilt die Antwort in zwei Hälften — die letzte Zeile sagt, was schiefging, die Rahmen darüber sagen, wo — wer also nur die letzte Zeile liest, kennt den Namen und verliert den Ort; und bei den „Wert fehlt“-Fehlern wie NoneType und KeyError liegt die Ursache fast immer in einem Rahmen über dem abgestürzten.
Build und Typen10
Build-Fehler sind ein Werkzeug, das verweigert, bevor irgendetwas läuft — sie zerbrechen im Moment ihres Auftretens nichts, stellen aber zwei Fragen: reparieren Sie Typ oder Pfad passend zur echten Form, oder schieben Sie diese eine Zeile mit einem as any oder einem Unterdrückungskommentar durch? Und genau hier zeigen sich erstmals die Dinge, die nur auf dem eigenen Rechner stimmen: Groß-/Kleinschreibung, Endungen und Umgebungsvariablen.
Docker12
Docker-Fehler werden erst lesbar, wenn man sie einer Schicht zuordnet — der Client erreicht den Daemon nicht, die Registry verweigert, ein RUN scheitert im Build, ein Container stirbt sofort beim Start: das sind vier verschiedene Probleme — und in der Build- und Laufzeitschicht ist die Zeile selbst nicht der Grund: der Grund steht in der Ausgabe des Befehls, der darin lief, und auch der Preis jeder Behebung unterscheidet sich je Schicht.
Eine Fehlermeldung lesen
- Von der ersten Zeile abwärts lesen. Weiter unten geht es um das Innere des Werkzeugs; die Ursache steht meist oben.
- Gibt es Datei und Zeilennummer, dort anfangen — nicht der oberste Stack-Frame, sondern die oberste Zeile, die eine eigene Datei nennt.
- Die Meldung wörtlich suchen, vorher aber eigene Pfade und Variablennamen entfernen; genau die verhindern den Treffer.
- Dieselbe Lage wird je Werkzeugversion anders formuliert. Passen die Treffer nicht, die Versionsnummer mit in die Suche.
- Vor dem Einfügen einer Lösung prüfen, was sie verwirft. Manches davon lässt sich nicht zurückholen.
Häufige Fragen
Q. Warum werden die Meldungen nicht übersetzt?
Weil man sie sucht. Das Werkzeug gibt Englisch aus, und eine übersetzte Meldung findet nichts. Nur Bedeutung und Abhilfe folgen der Sprache.
Q. Auf meinem Bildschirm steht es etwas anders.
Werkzeuge formulieren das je Version neu. Stimmt das Skelett, nachdem eigene Pfade und Namen entfernt sind, ist es derselbe Fehler. Bei abweichender Version die Versionsnummer mitsuchen.
Q. Darf ich die Lösung einfach ausführen?
Erst prüfen, was sie verwirft. git reset --hard, ein Force-Push und docker system prune entfernen Unwiederbringliches — die Einträge sagen es, wo es zutrifft.
Q. Wie finde ich einen Fehler, der hier fehlt?
Eigene Pfade, Namen und Zahlen aus der Meldung streichen und den Rest suchen. Dieser Rest ist der Satz der Werkzeugautoren, und er ist es, der trifft.