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.


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>

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

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"


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'

1

Salah:

people:
  empId: 123
  empName: John
    empDept: IT

Benar:

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

0

Masalah saya adalah kumpulan kutipan yang hilang;

Foo: bar 'baz'

seharusnya

Foo: "bar 'baz'"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.