Terjadi kesalahan saat mengurai file yaml: nilai pemetaan tidak diizinkan di sini

90

Saya ingin mengunggah aplikasi ke Google App Engine:

Saya mengerti

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

Saat berlari

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

dengan file app.yaml ini:

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

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

baris 2, kolom 8 sesuai dengan baris versi. Ada apa disini? Btw, saya menggunakan Ubuntu 12.04 di sini.

andandandand
sumber
Pastikan Anda tidak menyalin teks dari Skype atau beberapa perangkat lunak. Tempel teks terlebih dahulu ke editor teks, lalu salin dari sana. Saya menyalin dari Skype dan ternyata tidak ada masalah. Saya menyelesaikannya dengan hanya menghapus dan kemudian mengetik ulang 'spasi' untuk membuat spasi (Unix) yang valid.
Nadjib Mami

Jawaban:

63

Penyebab lainnya adalah lekukan yang salah yang berarti mencoba membuat objek yang salah. Saya baru saja memperbaikinya dalam definisi Kubernetes Ingress:

Salah

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

Benar

- path: /
  backend:
    serviceName: <service_name>
    servicePort: <port>
lcfd
sumber
4
Ya, ini juga masalah saya. Inilah mengapa python adalah orang bodoh. Spasi putih TIDAK boleh penting.
Kenny Wyland
Tidak tahu ini adalah file python. Saya memiliki SATU ruang ekstra. Gila. Terima kasih atas jawabannya!
Vern Jensen
4
Ini BUKAN file Python. YAML dan Python serupa karena keduanya menggunakan "ruang kosong bantalan beban" untuk mengurangi jumlah tanda baca yang seharusnya Anda butuhkan.
shacker
1
@acker Saya lebih suka menggunakan tanda baca.
bot_bot
Ya. Tapi entah bagaimana lekukan di python tidak pernah memberi saya masalah sebanyak di YAML. Objek dalam penspasian item daftar memberi saya setiap waktu. YAML benar-benar format yang mengerikan. Mengapa kita tidak bisa hanya memiliki JSON dengan komentar dan koma di belakangnya. Akan jauh lebih mudah.
Gellweiler
5

Atau, jika jarak bukan masalahnya, ia mungkin menginginkan nama direktori induk daripada nama file.

Bukan $ dev_appserver helloapp.py
Tapi$ dev_appserver hello/

Sebagai contoh:

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

Melawan

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
John Mee
sumber
2

Mungkin ini akan membantu orang lain, tetapi saya telah melihat kesalahan ini ketika kanan pemetaan berisi titik dua tanpa menyertakan tanda kutip, seperti:

someKey: kunci lain: Perubahan yang harus dilakukan hari ini: lebih banyak berolahraga

seharusnya

someKey: kunci lain: "Perubahan yang harus dilakukan hari ini: lebih banyak berolahraga"

Joe
sumber
2

Saya telah melihat kesalahan ini dalam situasi yang mirip dengan yang disebutkan dalam jawaban Joe:

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

Kami memiliki titik dua dalam nilai deskripsi. Jadi, masalahnya ada pada tanda kutip yang hilang di sekitar nilai deskripsi. Ini dapat diselesaikan dengan menambahkan kutipan:

description: 'Too high 5xx responses rate: {{ .Value }} > 0.05'
Evgeny Veretennikov
sumber
1

Salah:

people:
  empId: 123
  empName: John
    empDept: IT

Benar:

people:
  emp:
    id: 123
    name: John
    dept: IT
Sajeev
sumber
0

Masalah saya adalah kumpulan kutipan yang hilang;

Foo: bar 'baz'

seharusnya

Foo: "bar 'baz'"
Graham P Heath
sumber