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


10

我在MongoDB Shell版本中使用以下命令(Windows计算机):3.0.7:

mongod --config "G:\NodeApps\mongod.cfg" --install

mongod.cfg文件的内容如下:

systemLog:
    destination: file
    path:"G:\NodeApps\data\log"
storage:
    dbPath:"G:\NodeApps\data"

得到以下错误:

Error parsing YAML config file: yaml-cpp: error at line 4, column 8: illegal map value
try 'mongod --help' for more information

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

我已经尝试过的:

  1. 我正在使用空格(而不是制表符)
  2. 我试图通过将文件保存为ASCII格式来尝试,正如其中一篇文章中提到的那样,不应将Mongod配置文件保存为非ACSII格式。甚至在UTF-8中也没有。

请帮我解决一下这个。

Answers:


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

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


2

yaml不接受制表符,必须使用空格代替制表符

systemLog:
    destination: file
    path: c:\data\log\mongod.log
storage:
    dbPath: c:\data\db
security:
     authorization: enabled
net:
    bindIp: 127.0.0.1
    port: 27017

上面是我的mongod.cfg文件,
例如在security:和授权之间,必须为空格,制表符无效将给您标题上的错误。

您应该始终在以下位置验证您的配置文件

验证YAML


0
  1. “ NodeApps,数据,登录G”驱动器必须存在。
  2. “ path:G:”之间必须存在空格
  3. 所有线必须是一个空格距离。

    systemLog:

    目的地:文件

    路径:G:/ NodeApps / data / log

    存储:

    dbPath:G:/ NodeApps / data


-4

在Windows中,“ \”应替换为双斜杠(“ \”)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.