解析 yaml 文件时出错: 此处不允许映射值

我想上传一个应用程序到谷歌应用程序引擎:

我明白了

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列对应于版本行。这里有什么问题吗? 顺便说一下,我在这里使用的是 Ubuntu 12.04。

276863 次浏览

改变

application:climate-change

application: climate-change

如果需要键值对,yaml 中冒号后面的空格是必需的(参见 http://www.yaml.org/spec/1.2/spec.html#id2759963)

或者,如果间距不是问题,它可能希望使用父目录名而不是文件名。

不是 $ dev_appserver helloapp.py < br/> 而是 $ 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

也许这会对其他人有所帮助,但是当映射的 RHS 包含一个没有引号的冒号时,我看到了这个错误,比如:

关键词: 另一个关键: 今天要做的改变: 多锻炼

应该是

关键词: 另一个关键: “改变今天: 多锻炼”

另一个原因是错误的缩进,这意味着试图创建错误的对象。我刚刚修正了一个库伯内特进入法案的定义:

错了

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

没错

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

I've seen this error in a similar situation to mentioned in Joe's answer:

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

我们在描述值中有一个冒号。所以,问题在于在描述值周围缺少引号。可以通过添加引号来解决这个问题:

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

我的问题是缺少一组引用;

Foo: bar 'baz'

应该是

Foo: "bar 'baz'"

错误:

people:
empId: 123
empName: John
empDept: IT

正确:

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

Yaml 文件中有几个问题,正如大多数人提到的那样,yaml 文件通常很难找出问题所在,

幸运的是,使用诸如 yaml lint之类的工具可以很容易地识别它,而且您可能不需要来自社区的帮助。

Install it

npm install -g yaml-lint

以下是验证方法

E:\githubRepos\prometheus-sql-exporter-usage>yamllint docker-compose.yaml
√ YAML Lint successful.

In our case, we had weird dash () instead of normal one (-) due to copy and paste.