将此YAML文件粘贴到在线yaml解析器时,我收到了预期的块结束错误:
ADDATTEMPTING: 'Tentative d ajout '
ATTEMPTINGTOGIVE: 'Tenter de donner '
ATTEMPTINGTOSET1: 'Tentative de définition '
ATTEMPTINGTOSET2: ' avec '
ALREADYEXISTS: 'Erreur. Package existe déjà’
CANCEL1: 'Annulation...'
(...)
错误
ERROR:
while parsing a block mapping
in "<unicode string>", line 1, column 1:
ADDATTEMPTING: 'Tentative d ajout '
^
expected <block end>, but found '<scalar>'
in "<unicode string>", line 6, column 11:
CANCEL1: 'Annulation...'
^
答案 0 :(得分:18)
以ALREADYEXISTS
开头的行使用’
作为结束语,它应该使用'
。下一行(报告错误的位置)的公开引用被视为结束报价,这种混淆导致错误。
答案 1 :(得分:16)
我想让这个答案有意义,所以同样的 错误的用户可以享受任何麻烦。
实际上,我得到了相同的错误,但出于不同的原因,在我的情况下,我没有使用任何类型的引用,仍然得到像expected <block end>, but found BlockMappingStart
这样的错误
我通过在同一个.yml文件中修复 对齐问题解决了这个问题。
如果我们没有管理正确的标签空间(键盘键)&#39;对于 保持继承者或祖先,然后我们必须分阶段这样的 的东西。
现在我做得很好。
答案 2 :(得分:8)
如果使用四个空格而不是两个空格缩进,也会发生此错误。
例如,以下内容会引发错误:fields:
- metadata: {}
name: colName
nullable: true
而将缩进更改为两个空格会修复它:
fields:
- metadata: {}
name: colName
nullable: true
答案 3 :(得分:5)
YAML非常严格地遵循缩进结构。甚至一个空格/制表符也可能导致上述问题。就我而言,一开始只是一次空间。
因此请确保在更新YAML文件时没有引入多余的空格/制表符
答案 4 :(得分:4)
使用YAML,请记住,所有关于用于通过层次结构(缩进)定义配置的空间。解析YAML文档时遇到的许多问题只是源于给定YAML文件中某个键值之前的额外空格(或者没有足够的空格)。
答案 5 :(得分:2)
正如许多人所说,这对我来说也是一个缩进问题。
使用以下网站来纠正错误并美化YAML。
https://onlineyamltools.com/validate-yaml < / p>
答案 6 :(得分:0)
在我的情况下,当我尝试传递看起来像字节对象(b“ xxxx”)但实际上是字符串的变量时发生了错误。
您可以像这样将字符串转换为真实字节对象:
foo.strip('b"').replace("\\n", "\n").encode()