You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用js-yaml转换YAML文件时遭遇YAMLException错误,求解决方案

问题分析与解决

错误原因

你犯了逻辑错误:yaml.load(fileContents)已经把整个YAML文件解析成JavaScript对象,此时readFile.usage是普通字符串(对应YAML里的多行文本块)。但你把这个字符串传给yamlLint.lint()——这个工具是用来校验完整YAML文档语法的,单纯的多行文本不是合法YAML文档(YAML要求至少有键值对等文档结构),因此抛出end of the stream or a document separator is expected错误。

解决方案

根据需求分两种情况处理:

情况1:校验整个YAML文件语法

如果要确认原始YAML文件是否合法,直接用yamlLint.lint()校验原始fileContents,无需先解析:

yamlLint
  .lint(fileContents)
  .then(() => {
    console.log("Valid YAML file.");
    // 校验通过后再解析文件
    const readFile = yaml.load(fileContents);
    // 后续处理readFile
  })
  .catch((error) => {
    console.error("Invalid YAML file.", error);
  });

情况2:仅处理解析后的usage字段

既然你说YAML文件经校验器检查无误,那根本不需要对readFile.usage做YAML校验——yaml.load能成功解析,就说明这个字段格式完全符合YAML规范,直接使用字符串即可:

try {
  const readFile = yaml.load(fileContents);
  console.log("Valid YAML file.");
  if (readFile.usage) {
    // 直接处理usage字符串,比如输出、渲染等
    console.log("Usage content:", readFile.usage);
  }
} catch (error) {
  console.error("Invalid YAML file.", error);
}

额外说明

你提供的YAML示例中usage字段的多行文本格式完全正确(用|保留换行),报错和YAML文件本身无关,完全是代码逻辑错误导致的。

内容的提问来源于stack exchange,提问作者Alex Marple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 00:05:22