yaml debugging configuration web-development devops

Lösung von 'YAML parse error' und häufigen YAML-Einrückungsproblemen

Ein umfassender Leitfaden zur Behebung von YAML-Fehlern wie 'invalid YAML', 'YAML indentation error' und 'YAML tab character' Problemen. Lernen Sie die strengen Regeln der YAML-Syntax kennen.

2026-04-11

Lösung von "YAML parse error" und häufigen YAML-Einrückungsproblemen: Ein vollständiger Leitfaden

YAML (YAML Ain't Markup Language) wird für sein menschenlesbares Format und seine saubere Syntax geschätzt. Es ist der Standard für Konfigurationen in Tools wie Kubernetes, Docker Compose, GitHub Actions und vielen Generatoren für statische Seiten. YAML ist jedoch notorisch streng, was Leerzeichen und Einrückungen angeht. Ein einziges Leerzeichen an der falschen Stelle kann zu einem invalid YAML oder YAML parse error führen, der schwer zu finden ist.

In diesem Leitfaden untersuchen wir die häufigsten YAML-Fehler und wie man sie schnell behebt.


1. Häufige YAML-Fehlermeldungen

Abhängig von Ihrem Parser (wie js-yaml oder Pythons PyYAML) sehen Sie möglicherweise:

  • YAML parse error: bad indentation of a mapping entry (Falsche Einrückung eines Mapping-Eintrags)
  • YAML parse error: found character '\t' that cannot start any token (Verwendung von YAML tab character)
  • invalid YAML: mapping values are not allowed here (Mapping-Werte sind hier nicht erlaubt)
  • YAML parse error: duplicate key "..." (duplicate key in YAML / Doppelter Schlüssel)
  • YAML syntax error: end of stream loss

2. Hauptursachen und Lösungen

2.1 Einrückungsfehler (YAML indentation error)

YAML verwendet Einrückungen, um Strukturen zu definieren (ähnlich wie geschweifte Klammern {} in JSON). Diese müssen konsistent sein.

Der Fehler:

services:
  web:
    image: nginx
   ports:  # Falsche Einrückung (3 Leerzeichen statt 2 oder 4)
      - "80:80"

Die Lösung: Stellen Sie sicher, dass alle Geschwisterelemente in einer Map oder Liste genau die gleiche Anzahl an führenden Leerzeichen haben. Die Verwendung von 2 Leerzeichen ist der Industriestandard.

2.2 Tabulatorzeichen (YAML tab character)

YAML verbietet strengstens die Verwendung des Tabulatorzeichens (\t) für Einrückungen. Sie MÜSSEN Leerzeichen verwenden.

Der Fehler: found character '\t' that cannot start any token

Die Lösung: Konfigurieren Sie Ihren Code-Editor (VS Code, Sublime usw.) so, dass "Tabs in Leerzeichen konvertiert" werden. Wenn Sie bereits Code mit Tabs eingefügt haben, verwenden Sie "Suchen und Ersetzen", um \t durch zu ersetzen.

2.3 Doppelte Schlüssel (duplicate key in YAML)

Im Gegensatz zu einigen anderen Formaten erlaubt YAML nicht, dass derselbe Schlüssel zweimal auf derselben Ebene eines Mappings erscheint.

Der Fehler:

image: nginx
ports:
  - "80:80"
image: alpine  # Doppelter Schlüssel!

Die Lösung: Überprüfen Sie Ihre Konfiguration auf versehentliche Duplikate, insbesondere in großen Dateien oder beim Zusammenführen mehrerer Dateien.

2.4 Fehlendes Leerzeichen nach dem Doppelpunkt

Ein häufiger YAML-Fehler ist das Vergessen des Leerzeichens nach dem Doppelpunkt (:), der einen Schlüssel und seinen Wert trennt.

Der Fehler: url:https://example.com (YAML hält dies für eine lange Zeichenfolge)

Die Lösung: Fügen Sie immer ein Leerzeichen ein: url: https://example.com.

2.5 Mehrzeilige Zeichenfolgen

Wenn Sie eine lange Zeichenfolge oder einen Codeblock einfügen müssen, müssen Sie die richtigen Block-Skalar-Indikatoren verwenden: | (behält Zeilenumbrüche bei) oder > (faltet Zeilenumbrüche).

Der Fehler:

description: Dies ist eine
sehr lange Zeichenfolge
ohne Indikatoren. # Dies verursacht einen Parse-Fehler

Die Lösung:

description: |
  Dies ist eine
  sehr lange Zeichenfolge,
  die Zeilenumbrüche beibehält.

3. Fortgeschrittene Fehlerbehebung

3.1 Sonderzeichen in Werten

Wenn Ihr Wert Zeichen wie :, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, ` enthält, könnte dies den Parser verwirren. Lösung: Setzen Sie den gesamten Wert in doppelte Anführungszeichen ("...") oder einfache Anführungszeichen ('...').

3.2 Boolean-Fallen

In YAML 1.1 werden Werte wie yes, no, on, off automatisch in Booleans (true/false) konvertiert. Dies kann Probleme verursachen, wenn Sie eigentlich die Zeichenfolge "no" wollten (z. B. einen Ländercode). Lösung: Setzen Sie diese Zeichenfolgen immer in Anführungszeichen: country: "NO".


4. Prävention und Best Practices

  1. YAML-Linter verwenden: Installieren Sie einen Linter in Ihrem Editor (z. B. vscode-yaml von Red Hat), um Fehler in Echtzeit zu finden.
  2. Schema-Validierung: Verwenden Sie für bestimmte Formate wie Kubernetes oder Docker Compose deren offizielle JSON/YAML-Schemas zur Validierung.
  3. Automatisierte Konvertierung: Wenn Sie sich mit JSON wohler fühlen, schreiben Sie Ihre Konfiguration in JSON und konvertieren Sie sie mit einem Tool in YAML.
  4. Konsistente Abstände: Standardisieren Sie auf 2 Leerzeichen für alle YAML-Dateien in Ihrem Projekt.

5. FAQ: Häufig gestellte Fragen

F: Warum ist mein YAML in einem Parser gültig, in einem anderen aber nicht?

A: Es gibt zwei Hauptversionen von YAML: 1.1 und 1.2. Einige Parser (wie PyYAML) verwenden standardmäßig 1.1, während andere 1.2 verwenden. Version 1.2 ist besser mit JSON kompatibel. Wenn Probleme auftreten, versuchen Sie, %YAML 1.2 oben in Ihre Datei einzufügen.

F: Kann ich Kommentare in YAML verwenden?

A: Ja! Dies ist einer der großen Vorteile von YAML gegenüber JSON. Verwenden Sie das Symbol # für Kommentare.

F: Wie maskiere ich ein einfaches Anführungszeichen innerhalb einer in einfache Anführungszeichen gesetzten Zeichenfolge?

A: In YAML maskieren Sie ein einfaches Anführungszeichen, indem Sie es verdoppeln: 'It''s a beautiful day'.


6. Schnellcheck-Tool

Haben Sie Probleme, diesen unsichtbaren Tab oder das falsche Leerzeichen zu finden? Verwenden Sie unseren YAML-Validator & Formatierer (unterstützt YAML-zu-JSON-Konvertierung und Validierung). Er kann:

  • Syntaxfehler hervorheben mit Zeilennummern.
  • Tabs automatisch in Leerzeichen konvertieren.
  • Unordentliches YAML für eine bessere Lesbarkeit verschönern.

Verwandte Fehler

  • Lösung von 'Unexpected token in JSON' Fehlern
  • Behebung von 'invalid base64 string' Fehlern
  • Verständnis von Zeichenkodierungskonflikten