【问题标题】:ScannerError: mapping values are not allowed here in "config.yaml"?ScannerError:“config.yaml”中不允许映射值?
【发布时间】:2021-05-02 07:50:18
【问题描述】:

我想为所有项目配置配置一个 yaml 文件,但是我无法读取/解析下面的这个文件?

这是我得到的错误,我在这里做错了什么?

ScannerError: mapping values are not allowed here
  in "config.yaml", line 7, column 13

appName: test
logLevel: WARN


TESTER:
    ENVIRONMENT: staging
      CONFIG:
        DATABASE:
          HOST: 2123.3123.2112.12
          USERNAME: x
          PASSWORD: y
          DB: Q
        CLASSIFIER:
          IMG_WIDTH: 380
          IMG_HEIGHT: 380
          HOST: 0.0.0.0:3201

【问题讨论】:

    标签: python python-3.x yaml pyyaml


    【解决方案1】:

    问题在于您的 yaml 的缩进。与CONFIG 相比,ENVIRONMENT 具有不同的缩进,后者位于下一行。

    您可以使用任何在线验证器,例如 http://www.yamllint.comhttps://codebeautify.org/yaml-validator 来验证您的 yaml 文件。

    这是有效的 YAML:

    appName: test
    logLevel: WARN
    
    
    TESTER:
        ENVIRONMENT: staging
        CONFIG:
            DATABASE:
                HOST: 2123.3123.2112.12
                USERNAME: x
                PASSWORD: y
                DB: Q
            CLASSIFIER:
                IMG_WIDTH: 380
                IMG_HEIGHT: 380
                HOST: 0.0.0.0:3201
    

    更新:
    如果您想使用多个配置,那么通常地图列表 与下面的名称属性一起使用。
    提供 NAME 属性是一种好习惯,即使只有一个配置。

    appName: test
    logLevel: WARN
    
    TESTER:
      - NAME: staging
        ENVIRONMENT: staging
        CONFIG:
          DATABASE:
            HOST: 2123.3123.2112.12
            USERNAME: x
            PASSWORD: 'y'
            DB: Q
          CLASSIFIER:
            IMG_WIDTH: 380
            IMG_HEIGHT: 380
            HOST: '0.0.0.0:3201'
      - NAME: production
        ENVIRONMENT: production
        CONFIG:
          DATABASE:
            HOST: 2123.3123.2112.14
            USERNAME: xP
            PASSWORD: yP
            DB: Q
          CLASSIFIER:
            IMG_WIDTH: 380
            IMG_HEIGHT: 380
            HOST: '0.0.0.0:3201'
    

    this YAML中,他同样使用了deploy下的两张地图

    【讨论】:

    • 我希望配置在暂存环境中,因为我也有生产环境,我想将它们分开,生产环境有不同的数据库凭据。
    • 那么你使用的格式有错误,CONFIG应该是另一个key的值,或者CONFIG应该是自己的key。您根本无法在 Environment 下增加 CONFIG 的缩进,因为 ENVIRONMENT 有一个值并且该条目已完成,下一个 extry 从另一个键开始:值对,这就是您的 YAML 无效的原因
    • 您能否建议如何创建另一个(键、值)环境生产并使用不同的数据库信息?如果可能的话,你能编辑和更新它吗?
    猜你喜欢
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2020-10-05
    • 2014-12-13
    • 2019-10-27
    • 1970-01-01
    相关资源
    最近更新 更多