YAML 的 VS-Code 编辑器说期待一个地图,但找到了一个序列



我正在编辑 ansible 角色的任务文件夹中的 main.yml。

我正在使用Red Hat的YAML vscode扩展。

这是文件的第一部分...

# Install Packages
- name: Install the Kafka Broker Packages
yum:
name: "{{item}}-{{confluent.package_version}}"
state: latest
loop: "{{kafka_broker_packages}}"
when: ansible_os_family == "RedHat"
- name: Install the Kafka Broker Packages
apt:
name: "{{item}}={{confluent.package_version}}"
update_cache: yes
loop: "{{kafka_broker_packages}}"
when: ansible_os_family == "Debian"

整个文件都有红色波浪线下划线,上面写着:

Expecting a 'map', but found a 'sequence'

我确定我在做一些愚蠢的事情 - 任何帮助都非常感谢

此问题的原因是 ansible 扩展 (https://marketplace.visualstudio.com/items?itemName=vscoss.vscode-ansible( 无法将给定文件识别为其支持的项目。要摆脱它,请尝试编辑 VSCode 的 settings.json 以添加以下配置:

"files.associations": {
"**/*.yml": "ansible"
},
"ansible.validation": true

该扩展的自述文件说:

具有内置的 Kubernetes 和 Kedge 语法支持。

因此,扩展可能会尝试根据 Kubernetes 或 Kedge 模式验证您的 YAML 文件,但由于您正在为 Ansible 编写配置文件,因此会失败。您可以尝试将yaml.validate设置为"false"以禁用验证。

但是,您可能最好改用Ansible扩展。

转到File >> preferences >> settings然后在右上角单击open settings(json)图标。 然后将其添加到设置的 json 中:

"files.associations": {
"**/*.yml": "yaml"
}

VSCode-YAML 从 http://schemastore.org/json/中提取 JSON 模式,并尝试将架构与 yaml 文件相关联,以便您可以悬停、自动完成、验证,而无需任何配置。但是,有时这些架构不正确,这里似乎就是这种情况。

您可以在此处提交问题:https://github.com/SchemaStore/schemastore,对架构的任何更新都将出现在 vscode-yaml 中,或者您可以通过将"yaml.schemaStore.enable"设置为 false 来禁用架构存储。

相关内容

最新更新