Erreur lors de l'analyse du fichier yaml: les valeurs de mappage ne sont pas autorisées ici


90

Je souhaite importer une application sur Google App Engine:

j'ai compris

Error parsing yaml file:
mapping values are not allowed here
  in "/home/antonio/Desktop/ATI/climate-change/app.yaml", line 2, column 8 

En courant

./appcfg.py update /home/antonio/Desktop/ATI/climate-change

avec ce fichier app.yaml:

application:climate-change
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: helloworld.app

ligne 2, colonne 8 correspond à la ligne de version. Quel est le problème ici? Btw, j'utilise Ubuntu 12.04 ici.


Assurez-vous que vous ne copiez pas le texte de Skype ou de certains logiciels. Collez d'abord le texte dans un éditeur de texte, puis copiez-le à partir de là. J'ai copié de Skype et visiblement il n'y avait aucun problème. Je l'ai résolu en supprimant simplement puis en retapant «espace» pour créer des espaces valides (Unix).
Nadjib Mami

Réponses:



63

Une autre cause est une mauvaise indentation qui signifie essayer de créer les mauvais objets. Je viens d'en corriger un dans une définition d'entrée Kubernetes:

Faux

- path: / 
    backend: 
      serviceName: <service_name> 
      servicePort: <port> 

Correct

- path: /
  backend:
    serviceName: <service_name>
    servicePort: <port>

4
Oui, c'était aussi mon problème. C'est pourquoi python est vraiment stupide. Les espaces ne devraient PAS être importants.
Kenny Wyland

Je n'avais aucune idée qu'il s'agissait d'un fichier python. J'avais UN espace supplémentaire. Fou. Merci pour la réponse!
Vern Jensen

4
Ce n'est PAS un fichier Python. YAML et Python sont similaires en ce sens qu'ils utilisent tous les deux des "espaces blancs porteurs" pour réduire la quantité de ponctuation dont vous auriez autrement besoin.
shacker

1
@shacker Je préfère avoir de la ponctuation.
bot_bot

Ouais. Mais d'une manière ou d'une autre, l'indentation en python ne m'a jamais posé autant de problèmes qu'en YAML. L'objet dans un espacement d'élément de liste me reçoit à chaque fois. YAML est vraiment un format horrible. Pourquoi ne pouvons-nous pas simplement avoir JSON avec des commentaires et des virgules de fin. Ce serait tellement plus facile.
Gellweiler le

5

Ou, si l'espacement n'est pas le problème, il peut vouloir le nom du répertoire parent plutôt que le nom du fichier.

Pas $ dev_appserver helloapp.py
mais$ dev_appserver hello/

Par exemple:

Johns-Mac:hello john$ dev_appserver.py helloworld.py
Traceback (most recent call last):
  File "/usr/local/bin/dev_appserver.py", line 82, in <module>
    _run_file(__file__, globals())
...
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/yaml_listener.py", line 212, in _GenerateEventParameters
    raise yaml_errors.EventListenerYAMLError(e)
google.appengine.api.yaml_errors.EventListenerYAMLError: mapping values are not allowed here
  in "helloworld.py", line 3, column 39

Contre

Johns-Mac:hello john$ cd ..
Johns-Mac:fbm john$ dev_appserver.py hello/
INFO     2014-09-15 11:44:27,828 api_server.py:171] Starting API server at: http://localhost:61049
INFO     2014-09-15 11:44:27,831 dispatcher.py:183] Starting module "default" running at: http://localhost:8080

2

Peut-être que cela aidera quelqu'un d'autre, mais j'ai vu cette erreur lorsque le RHS du mappage contient un deux-points sans entre guillemets, tels que:

someKey: une autre clé: Changement à faire aujourd'hui: s'entraîner plus

devrait être

someKey: une autre clé: "Changer à faire aujourd'hui: travailler plus"


2

J'ai vu cette erreur dans une situation similaire à celle mentionnée dans la réponse de Joe:

description: Too high 5xx responses rate: {{ .Value }} > 0.05

Nous avons un deux-points dans la valeur de la description. Le problème réside donc dans les guillemets manquants autour de la valeur de la description. Il peut être résolu en ajoutant des guillemets:

description: 'Too high 5xx responses rate: {{ .Value }} > 0.05'

1

Incorrect:

people:
  empId: 123
  empName: John
    empDept: IT

Correct:

people:
  emp:
    id: 123
    name: John
    dept: IT

0

Mon problème était un ensemble de citations manquant;

Foo: bar 'baz'

devrait être

Foo: "bar 'baz'"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.