Не могу установить swagger - Не могу прочитать свойство 'параметры' из неопределенного - PullRequest
0 голосов
/ 18 февраля 2020

У меня проблема с настройкой чванства в моем приложении node.js. Я использую swagger-jsdoc и swagger-ui-express для создания документации. Вот версии

"swagger-jsdo c": "3.5.0", "swagger-ui- express": "4.1.3"

Ниже приведены конфиги, которые я передаю swagger-jsdo c.

openapi: 3.0.0
info:
  description: test
  version: 3.0.0
  title: U-CRM api documentation
  termsOfService: http://swagger.io/terms/
servers:
  - url: 'https://localhost:5000'
    description: Local server
tags:
- name: U-CRM
  description: CRM for university
components:
  parameters:
    $ref: 'components/parameters/index.yml'
  schemas:
    $ref: 'components/schemas/index.yml'
paths:
  $ref: '#/paths/index.yml'

В конце концов, я получаю сообщение об ошибке

Невозможно прочитать свойство 'parameters' of undefined

На самом деле, меня это удивляет, так как я внимательно читаю документы по чванству. В чем может быть проблема?

1 Ответ

0 голосов
/ 18 февраля 2020

OpenAPI не поддерживает $ref везде . $ref может использоваться только в определенных c местах, где Спецификация OpenAPI явно заявляет, что значением поля может быть «Ссылочный объект».

Например, $ref недопустимо непосредственно в paths, в components/parameters и components/schemas - вы можете ссылаться только на отдельные пути, параметры и схемы.

Правильная версия вашего примера:

paths:
  /foo:
    $ref: '#/paths/index.yml#/~1foo'  # $ref to root node `/foo` in `paths/index.yml`
  /bar:
    $ref: '#/paths/index.yml#/~1bar'  # $ref to root node `/bar` in `paths/index.yml`

components:
  parameters:
    param1:
      $ref: 'components/parameters/index.yml#/param1'
    param2:
      $ref: 'components/parameters/index.yml#/param2'
  schemas:
    schema1:
      $ref: 'components/schemas/index.yml#/schema1'
    schema2:
      $ref: 'components/schemas/index.yml#/schema2'

Если вы хотите использовать $ref в случайных местах, вам придется предварительно обработать ваше определение, используя анализатор / инструмент, который может разрешать произвольные $ refs; это даст вам действительный файл OpenAPI, который можно использовать с OpenAPI-совместимыми инструментами. Одним из таких инструментов предварительной обработки является json -refs , пример предварительной обработки можно найти здесь .

...