LoginSignup
1
2

More than 1 year has passed since last update.

【VSCode】OpenAPIの3.0系を指定したいのに3.1系を強制された

Posted at

概要

VSCodeでOpenAPIのyamlファイルを編集していたところ、以下のエラーが発生しました。

String does not match the pattern of "^3\.1\.\d+(-.+)?$".yaml-schema: openapi.json

該当のファイルは以下になります。この「3.0.3」の部分でエラーが発生してしまいます。

openapi: 3.0.3
info:
  title: API
  description: API
  version: 1.3.0
  contact:
    email: example@gmail.com

以下の画像の通り
スクリーンショット 2022-12-21 13.43.23.png

OpenAPIのバージョンとしては3.0系を使用したいのですが、なぜか3.1系でなければならないと怒られています。
このエラーを解消しました。

原因はVSCodeの拡張機能「YAML」のせいっぽい

LinterとしてSpectralを使用しているのですが、この拡張に依存するYAMLという拡張機能が主な原因のようでした。

I did a little bit more digging, and it looks like it's somehow caused by RedHat's YAML extension which we depend on for yaml support. It seems to be picking it from schema store at https://www.schemastore.org/api/json/catalog.json which has OAS 3.1 schema. It can be disabled by turning "YAML > Schema Store > Enable" setting to off.

同じようにYAMLに依存している拡張機能OpenAPI (Swagger) Editorのissueで挙げられていたように、YAMLがOpenAPI 3.1系の定義を自動で参照するらしく、これにより3.0系を使用したくても3.1系の定義でLinterが起動してしまうようです。

解消方法

VSCodeの設定で以下を検索し、YAMLの設定を変更します。

@ext:redhat.vscode-yaml store

YAML > Schema Store > Enable のチェックを外せばエラーは解消されました。

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2