解析 YAML 配置文件时出错:yaml-cpp

Raj*_*hwa 11 mongodb mongodb-3.0

我在 MongoDB shell 版本中使用以下命令(Windows 机器):3.0.7:

mongod --config "G:\NodeApps\mongod.cfg" --install
Run Code Online (Sandbox Code Playgroud)

mongod.cfg 文件内容如下:

systemLog:
    destination: file
    path:"G:\NodeApps\data\log"
storage:
    dbPath:"G:\NodeApps\data"
Run Code Online (Sandbox Code Playgroud)

得到以下错误:

Error parsing YAML config file: yaml-cpp: error at line 4, column 8: illegal map value
try 'mongod --help' for more information
Run Code Online (Sandbox Code Playgroud)

类似的问题没有解决方案。

我已经尝试过的:

  1. 我正在使用空格(不是制表符)
  2. 我尝试以 ASCII 格式保存文件,正如其中一篇文章中提到的,不应以非 ACSII 格式保存 Mongod 配置文件。甚至在 UTF-8 中也不行。

请帮我解决一下这个。

Ste*_*nie 10

错误消息指出 YAML 解析器在您的配置文件中遇到问题的特定行和列,但如果您不熟悉格式,则可能很难计算出预期的内容。

需要两组更改才能使您的配置有效 YAML

  1. systemLog.pathstorage.dbPath键及其值之间添加一个“空格”

    YAML 需要键/值对之间有一个空格,因此报告:“第 4 行第 8 列错误:非法映射值”。

  2. 从路径值中删除双引号

    YAML 将引用字符串中的反斜杠解释为引入转义字符,因此报告:“第 3 行第 16 列错误:未知转义字符”。作为替代方案,您也可以保留引用的路径,但要么转义反斜杠 ( \\),要么使用正斜杠。

以下配置应该可以工作(假设"G:\NodeApps\data\"具有正确的目录和文件权限):

systemLog:
    destination: file
    path: G:\NodeApps\data\log
storage:
    dbPath: G:\NodeApps\data
Run Code Online (Sandbox Code Playgroud)

有几个 YAML 语法的在线测试器可用于解决问题(例如:YAML Lint)。