Skip to content

Guide

Erreurs YAML courantes

Six erreurs causent presque tous les échecs d’analyse. Voici ce que chacune signifie — et la correction exacte.

Par yamltojsonfree · Publié le · Mis à jour le

Pourquoi les erreurs YAML sont si difficiles à lire

YAML construit sa structure à partir de l’indentation ; quand quelque chose ne va pas, l’analyseur ne sait souvent pas ce qui ne va pas — seulement que la structure a cessé d’avoir un sens. C’est pourquoi un crochet non fermé à la ligne 12 est régulièrement signalé comme « mauvaise indentation » à la ligne 50 : l’analyseur a continué à consommer des lignes, en attendant un délimiteur fermant qui n’est jamais venu, et n’a abandonné que bien plus tard.

Les erreurs ci-dessous sont classées par leur vraie cause, pas par le message qu’imprime un analyseur. Si vous préférez les faire diagnostiquer automatiquement, collez votre document dans le validateur YAML ou le convertisseur YAML vers JSON — chacune de ces erreurs est détectée pour ce qu’elle est, avec la ligne, une explication claire et une correction suggérée.

Les six erreurs, en détail

Les six erreurs de syntaxe YAML les plus courantes sont : (1) une tabulation utilisée pour indenter, (2) une valeur sans guillemets contenant un deux-points, (3) un crochet, une accolade ou un guillemet non fermé, (4) une clé en double, (5) un alias vers une ancre inexistante, et (6) des clés sœurs indentées différemment.

1. Une tabulation sert à indenter

Pourquoi: YAML interdit totalement les tabulations pour l’indentation, parce que leur largeur varie d’un éditeur à l’autre.

Correction: Remplacez chaque tabulation par des espaces — deux par niveau est la convention. La plupart des éditeurs le font avec « convertir l’indentation en espaces ».

2. Une valeur sans guillemets contient un deux-points

Pourquoi: title: foo: bar est ambigu — l’analyseur ne peut pas dire quel deux-points sépare la clé de la valeur.

Correction: Mettez la valeur entre guillemets : title: 'foo: bar'.

3. Un crochet, une accolade ou un guillemet n’est jamais fermé

Pourquoi: Les collections de flux comme [80, 443] et les chaînes entre guillemets doivent être fermées sur la même ligne logique. La plupart des analyseurs signalent cela comme une erreur d’indentation de nombreuses lignes plus loin.

Correction: Ajoutez le délimiteur fermant, ou réécrivez la valeur en style bloc avec une entrée par ligne.

4. La même clé apparaît deux fois

Pourquoi: Les mappages YAML exigent des clés uniques, tout comme les objets JSON. Garder silencieusement la dernière valeur masquerait un vrai bug.

Correction: Renommez ou supprimez le doublon — ou indentez-le d’un niveau s’il devait être une sous-clé.

5. Un alias pointe vers une ancre qui n’existe pas

Pourquoi: *nom fait référence à une ancre définie avec &nom. Les ancres doivent apparaître dans le document avant les alias qui les utilisent.

Correction: Définissez l’ancre d’abord, et vérifiez l’orthographe — les noms d’ancres sont sensibles à la casse.

6. Des clés sœurs sont indentées différemment

Pourquoi: Toutes les clés d’un même bloc doivent être à la même indentation. Deux espaces sur une ligne et trois sur la suivante terminent le bloc prématurément.

Correction: Rendez l’indentation de toutes les clés sœurs identique.

Deux corrections, avant et après

Les deux erreurs qu’on rencontre le plus souvent, présentées en YAML cassé à côté de sa forme corrigée.

Deux-points sans guillemets dans une valeur

Le second deux-points rend la ligne ambiguë ; mettre toute la valeur entre guillemets règle le problème.

Cassé

title: Deploy: production
owner: platform team

Corrigé

title: "Deploy: production"
owner: platform team

Indentation inégale entre sœurs

« ports » est à trois espaces alors que ses sœurs sont à deux, le bloc se termine donc trop tôt.

Cassé

server:
  host: localhost
   ports:
    - 8080

Corrigé

server:
  host: localhost
  ports:
    - 8080

Quand le YAML est valide mais quand même faux

Un document peut s’analyser parfaitement et signifier pourtant autre chose que ce que vous vouliez. Le cas classique est country: NO, YAML valide dans toutes les versions — mais lu comme la chaîne "NO" en YAML 1.2 et comme le booléen false en YAML 1.1. Toute cette classe de changements de type silencieux est traitée dans le guide YAML 1.1 vs 1.2.

Références

Corrigez votre YAML maintenant

Chaque erreur de cette page est détectée avec la ligne exacte et une correction suggérée par les outils gratuits de ce site. Rien n’est envoyé — tout s’exécute dans votre navigateur.