yaml - YAML 错误:需要流结束或文档分隔符
问题描述
我在 yaml 文件中收到以下错误 错误:第 2 行第 11 列应有流结束或文档分隔符:apiVersion:v1 ^ 行:未定义未定义
这是文件的全部内容
<<EOT
apiVersion: v1
clusters:
- cluster:
server: https://3F46DDD9022BD149B88DA7ED4AFB2B30.gr7.eu-west-1.eks.amazonaws.com
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjR> name: kubernetes
contexts:
- context:
cluster: kubernetes
user: aws
name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "terraform-eks-demo"
EOT
我已经在谷歌上搜索了几个小时,但我无处可去。我已经尝试了我能找到的每一个 YAML linter,有人能指出我正确的方向吗?我是新手,如果这不是很明显
解决方案
您需要删除<<EOT
和EOT
。您可能从通过heredoc将YAML 注入命令行实用程序的一些代码中复制了它们,但它们不应成为YAML 内容的一部分。
发生的情况是,当 YAML 处理器看到<<EOT
(由于不是特殊字符而将其解析为 YAML 标量的一部分<
)然后是新行时。根级别的多行标量必须是文档的单个根节点。读取第二行时,YAML 处理器会看到:
此处不允许的 a。此时,两行都被读取为多行标量,并且不能将多行标量用作映射键。因此,处理器抱怨在 YAML 文档的单个根节点之后,文档必须结束,但您尝试启动映射。
推荐阅读
- three.js - 带有 WebRTC 流的 ThreeJS 位置音频不产生声音
- java - 无法正确连接 java 中的两个表;DTO
- domain-driven-design - DDD:放置接口(端口)的位置
- php - 我想将来自引导日期选择器的日期数组转换为 yyyy-mm-dd 格式的 PHP 日期
- jenkins - 构建步骤“Windows PowerShell”在詹金斯中将构建标记为失败
- r - 使用 coord_cartesian 缩放后向 ggplot 添加刻度
- express - 只有所有者(创建者)可以编辑/删除条目 expressJS
- shell - 使用shell用正则表达式替换文件中的字符串
- c# - 添加区域后 MVC 菜单不起作用
- laravel - 在 Laravel 中根据中间件使用不同的路由命名空间