Erro ao analisar o arquivo yaml: valores de mapeamento não são permitidos aqui


93

Quero fazer upload de um aplicativo para o Google App Engine:

Eu entendi isso

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

Ao correr

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

com este arquivo app.yaml:

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

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

linha 2, coluna 8 corresponde à linha de versão. O que há de errado aqui? Btw, estou usando o Ubuntu 12.04 aqui.


Certifique-se de não copiar o texto do Skype ou de algum software. Cole o texto primeiro em um editor de texto e copie de lá. Copiei do Skype e visivelmente não houve problemas. Eu resolvi isso simplesmente excluindo e redigitando 'espaço' para criar espaços válidos (Unix).
Nadjib Mami

Respostas:



64

Outra causa é o recuo incorreto, o que significa tentar criar os objetos errados. Acabei de corrigir um em uma definição de entrada do Kubernetes:

Errado

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

Corrigir

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

4
Sim, esse era o meu problema também. É por isso que o python é totalmente estúpido. O espaço em branco NÃO deve ser importante.
Kenny Wyland

Não tinha ideia de que era um arquivo python. Eu tinha UM espaço extra. Louco. Obrigado pela resposta!
Vern Jensen

4
NÃO é um arquivo Python. YAML e Python são semelhantes no sentido de que ambos usam "espaços em branco de suporte de carga" para reduzir a quantidade de pontuação que você precisaria de outra forma.
shacker,

1
@shacker, prefiro pontuação.
bot_bot

Sim. Mas, de alguma forma, a indentação em python nunca me deu tantos problemas quanto em YAML. O objeto em um espaçamento de item de lista sempre me pega. YAML realmente é um formato horrível. Por que não podemos apenas ter JSON com comentários e vírgulas finais. Seria muito mais fácil.
Gellweiler 01 de

5

Ou, se espaçamento não for o problema, pode ser necessário o nome do diretório pai em vez do nome do arquivo.

Não $ dev_appserver helloapp.py
mas$ dev_appserver hello/

Por exemplo:

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

Versus

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

Talvez isso ajude outra pessoa, mas eu vi este erro quando o RHS do mapeamento contém dois pontos sem aspas, como:

someKey: outra chave: Mudança para fazer hoje: trabalhar mais

deveria estar

someKey: outra chave: "Mudança para fazer hoje: trabalhe mais"


2

Já vi esse erro em uma situação semelhante à mencionada na resposta de Joe:

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

Temos dois pontos no valor da descrição. Portanto, o problema está na falta de aspas em torno do valor da descrição. Pode ser resolvido adicionando aspas:

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

1

Incorreta:

people:
  empId: 123
  empName: John
    empDept: IT

Corrigir:

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

0

Meu problema era a falta de um conjunto de citações;

Foo: bar 'baz'

deveria estar

Foo: "bar 'baz'"
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.