gpt4 book ai didi

javascript - YAML 1.2 anchor 在 js-yaml 3.10.0 中不起作用?

转载 作者:行者123 更新时间:2023-11-30 11:25:34 31 4
gpt4 key购买 nike

加载时YAML anchors在 node.js (v4.8.7) 中使用 js-yaml 3.10.0包(有一个很好的使用它的例子 here )我得到以下错误:

"cannot merge mappings; the provided source object is unacceptable"

例如,在我的输入 yaml 文件中,我有如下内容作为我的 anchor :

defaultEd: &defaultEd
- 'Pennsylvania College of Technology AS'
- 'Pennsylvania College of Technology BS'

在我的输入 yaml 文件中引用 anchor 的地方我有以下内容:

...
education:
<<: *defaultEd
qs:
- 'Reading'
- 'Writing'
...

我希望在我的输出中完成以下内容:

education:
- 'Pennsylvania College of Technology AS'
- 'Pennsylvania College of Technology BS'

错误显示如下:

{ [YAMLException: cannot merge mappings; the provided source object is unacceptable at line 21, column 1:
qs:
^]
name: 'YAMLException',
reason: 'cannot merge mappings; the provided source object is unacceptable',
mark:
Mark {
name: null,
buffer: 'defaultEd: &defaultEd\n - \'Pennsylvania College of Technology AS\'\n - \'Pennsylvania College of Technology BS..
<<: *defaultEd\nqs:\n - \'Reading\'\n - \'Writing\'\n - \'Rithmatick\'\nexperience:\n - {posName: \'Database Analyst / Net Tech\', companyName: \'Choices People Supporting People\'}\n\u0000',
position: 435,
line: 20,
column: 0 },
message: 'cannot merge mappings; the provided source object is unacceptable at line 21, column 1:\n qs:\n ^' }
Error View file does not exist: someTest.yml

最佳答案

您可能误解/混淆了别名和合并键的用法 << .

YAML 中的任何 Node 都可以附加一个 anchor :

---
mapping: &map
a: 1
b: 2
sequence: &seq
- a
- b
scalar: &scalar foo
mapping-alias: *map
sequence-alias: *seq
scalar-alias: *scalar

合并键<< ,它不是 YAML 规范本身的一部分,但受到一些处理器的支持。它允许您将别名映射合并到另一个映射中。

defaults: &defaults
a: 1
b: 2
# .....
some-mapping:
<<: *defaults
c: 3

参见 http://yaml.org/type/merge.html

YAML 中的映射在编程语言中通常称为字典、关联数组、哈希或有时称为对象 (Javascript)。

在您的情况下,您可能只想:

education: *defaultEd

关于javascript - YAML 1.2 anchor 在 js-yaml 3.10.0 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48170480/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com