大佬教程收集整理的这篇文章主要介绍了node.js – 带标签的js-yaml问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
--- !Status Default: Description: - |- @R_197_8798@ge1 @R_197_8798@ge2 Samples: Multiple: false DynamicPlayers: false UnkNown: PlayerName: player PlayerCount: '???' Favicon: Timeout: 10s RecursiveFolderSearch: false ResizeStrategy: SCALE
当我安检文件时,我得到:YAMLException:未知标签!<!状态>在第17行,第1列:我有没有办法让它忽略标记,或者是否有不同的解决方法?我无法删除标签,因为这会阻止程序读取配置文件.
examples/custom_types.js
.解决方案是创建一个新的jsyaml.Type,告诉js-yaml要处理!状态值作为映射,如下所示:
let StatusYamlType = new jsyaml.Type('!Status',{ kind: 'mapping' });
然后,您需要创建一个包含StatusYamlType类型的新scheR_891_11845@a:
let STATUS_scheR_891_11845@A = jsyaml.scheR_891_11845@a.create([ StatusYamlType ]);
最后,通过scheR_891_11845@a选项将新的STATUS_scheR_891_11845@A传递给jsyaml.safeLoad:
jsyaml.safeLoad(doc,{ scheR_891_11845@a: STATUS_scheR_891_11845@A });
不幸的是,看起来没有办法让js-yaml忽略所有标签,所以如果遇到其他标签,你也必须为它们定义类型.
如果您还想使用!Status标记编写YAML文件,那么您必须实际定义Status原型并将构造和instanceOf选项提供给jsyaml.Type构造函数as in the example.一个非常基本的实现如下所示:
function Status(data) { Object.assign(this,data); } let StatusYamlType = new jsyaml.Type('!Status',{ kind: 'mapping',instanceOf: Status,construct: data => new Status(data),});
然后将模式传递给jsyaml.safeDump,就像对safeLoad一样:
jsyaml.safeDump(result,{ scheR_891_11845@a: STATUS_scheR_891_11845@A })
let doc = `--- !Status Default: Description: - |- @R_197_8798@ge1 @R_197_8798@ge2 # ... `; function Status(data) { Object.assign(this,}); let STATUS_scheR_891_11845@A = jsyaml.scheR_891_11845@a.create([ StatusYamlType ]); let result = jsyaml.safeLoad(doc,{ scheR_891_11845@a: STATUS_scheR_891_11845@A }); console.log(result.constructor.name,result); console.log(jsyaml.safeDump(result,{ scheR_891_11845@a: STATUS_scheR_891_11845@A }));
<script src="https://cdnjs.cloudFlare.com/ajax/libs/js-yaml/3.7.0/js-yaml.min.js"></script>
正如您所看到的,safeDump输出使用与原始输入略有不同的标记语法(!<!Status>而不是—!Status),但在此上下文中它们是等效的,YAML解析器应该将它们视为原样.
以上是大佬教程为你收集整理的node.js – 带标签的js-yaml问题全部内容,希望文章能够帮你解决node.js – 带标签的js-yaml问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。