【问题标题】:How to fix "mapping values are not allowed in this context " error in yaml file?如何修复 yaml 文件中的“在此上下文中不允许映射值”错误?
【发布时间】:2019-10-29 21:50:22
【问题描述】:

我浏览过类似的问题,并相信我已经应用了我能够从答案中收集到的所有内容。

我有一个 .yml 文件,据我所知,每个元素的格式都相同。然而根据YamlLint.com

(<unknown>): mapping values are not allowed in this context at line 119 column 16

在这种情况下,第 119 行是包含第二个实例的行,即下面的单词“transitions”。我可以告诉每个元素的格式相同。我在这里错过了什么吗?

  landingPage:
    include: false
    transitions:
      -
        condition:location
        nextState:location

  location:
    include:false
    transitions:
      -
        condition:excluded
        nextState:excluded

  excluded:
    include:false
    transitions:
      -
        condition:excluded
        nextState: excluded
      -
        condition:age
        nextState:age

【问题讨论】:

    标签: web-scraping yaml


    【解决方案1】:

    你不能有一个多行纯标量,比如你的include:false transitions 是映射的关键,这就是为什么你得到的映射值在这个上下文中是不允许的错误。

    要么您忘记了值指示符后必须有一个空格 (:),而您的本意是:

            include: false
            transitions:
    

    或者你需要引用你的多行标量:

            'include:false
            transitions':
    

    或者你需要把那个普通的标量放在一行上:

            include:false transitions:
    

    请注意,有些库根本不允许使用纯标量的值指示符,即使它们后面没有空格

    【讨论】:

      【解决方案2】:

      我们需要在“:”之前使用空格 然后它将执行 检查下面的 yaml 脚本 http://www.yamllint.com/

      【讨论】:

        【解决方案3】:

        yaml 文件有几个问题,yaml 文件会变得杂乱无章,幸运的是可以使用yaml lint 等工具轻松识别

        安装它

        npm install -g yaml-lint
        

        您可以通过以下方式进行验证

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

        【讨论】:

        • 我得到“YAML Lint 成功”,但运行 docker-compose up 仍然会抛出相同的 mapping values are not allowed in this context 错误,所以我猜你的答案对我来说并不适用。
        【解决方案4】:

        对我来说,问题是来自剪切和粘贴的 unicode '-'。视觉上看起来不错,但字符是“EN DASH”(U+2013)而不是“HYPHEN MINUS”(U+002D)

        【讨论】:

          【解决方案5】:

          如果您使用的是 powershell 并复制了 cat 命令,它将无法正常工作(我猜它正在以某种方式对内容进行编码)。而不是使用"$(cat file.yaml)",您应该使用不带引号的$(Get-Content file.yaml -Raw)

          真的很烦!

          【讨论】:

            【解决方案6】:

            我自己解决了这个问题,只是意识到我缩进了一行太远,然后取消缩进。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-16
              • 2016-12-19
              • 2017-11-03
              • 2016-07-13
              • 2020-06-07
              • 2021-04-13
              • 2021-07-23
              • 1970-01-01
              相关资源
              最近更新 更多