yaml 파일 구문 분석 오류 : 여기에 매핑 값이 허용되지 않습니다.


90

Google App Engine에 앱을 업로드하고 싶습니다.

나는 이것을 얻는다

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

실행할 때

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

이 app.yaml 파일로 :

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

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

2 행, 8 열은 버전 행에 해당합니다. 여기서 무엇이 잘못 되었습니까? Btw, 여기서 Ubuntu 12.04를 사용하고 있습니다.


Skype 또는 일부 소프트웨어에서 텍스트를 복사하고 있지 않은지 확인하십시오. 먼저 텍스트를 텍스트 편집기에 붙여 넣은 다음 거기에서 복사하십시오. Skype에서 복사했는데 눈에 띄게 문제가 없었습니다. 나는 단순히 삭제하고 '공간'을 다시 입력하여 유효한 (유닉스) 공간을 생성함으로써 문제를 해결했습니다.
Nadjib Mami

답변:



63

또 다른 원인은 잘못된 들여 쓰기로 잘못된 개체를 만들려고한다는 의미입니다. Kubernetes Ingress 정의에서 하나를 수정했습니다.

잘못된

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

옳은

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

4
네, 이것도 제 문제였습니다. 이것이 파이썬이 어리석은 이유입니다. 공백은 중요하지 않습니다.
Kenny Wyland 2017 년

이것이 파이썬 파일인지 몰랐습니다. 나는 여분의 공간이 하나 있었다. 미친. 답변 감사합니다!
베른 젠슨

4
Python 파일이 아닙니다. YAML과 Python은 둘 다 "load-bearing whitespace"를 사용하여 필요한 구두점의 양을 줄인다는 점에서 유사합니다.
shacker

1
@shacker 차라리 구두점이 필요합니다.
bot_bot

네. 그러나 어떻게 든 파이썬의 들여 쓰기는 YAML에서만큼 많은 문제를주지 못했습니다. 목록 항목 간격의 개체는 매번 나를 얻습니다. YAML은 정말 끔찍한 형식입니다. 주석과 후행 쉼표가있는 JSON을 사용할 수없는 이유는 무엇입니까? 훨씬 쉬울 것입니다.
Gellweiler

5

또는 공백이 문제가되지 않는 경우 파일 이름이 아닌 상위 디렉토리 이름이 필요할 수 있습니다.

아니 $ dev_appserver helloapp.py
하지만,$ dev_appserver hello/

예를 들면 :

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

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

다른 사람에게 도움이 될 수도 있지만 매핑의 RHS에 다음과 같이 따옴표를 묶지 않고 콜론이 포함되어있을 때이 오류가 발생했습니다.

someKey : 또 다른 키 : 오늘의 변화 : 더 많은 운동

해야한다

someKey : 또 다른 키 : "오늘을위한 변화 : 더 많은 운동"


2

Joe의 답변에서 언급 한 것과 유사한 상황 에서이 오류를 보았습니다.

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

설명 값에 콜론이 있습니다. 따라서 문제는 설명 값 주위에 따옴표가 누락 된 것입니다. 따옴표를 추가하여 해결할 수 있습니다.

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

1

틀림 :

people:
  empId: 123
  empName: John
    empDept: IT

옳은:

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.