Surnet / swagger-jsdoc

Generates swagger/openapi specification based on jsDoc comments and YAML files.
MIT License
1.69k stars 228 forks source link

Bug: Cannot read property 'schemas' of undefined #332

Closed yunibas-cto closed 1 year ago

yunibas-cto commented 2 years ago

Describe the bug I have a valid YAML swagger file (validated on editor.swagger.io). It throws the error. If I remove the components section the error goes away.

To Reproduce Steps to reproduce the behavior:

  1. Try starting nodejs with the YAML swagger file provided

Expected behavior Node.js should load and I should be able to access the API docs url.

Desktop (please complete the following information):

Additional context Here is my Swagger YAML file:

paths:
   /:
      get:
         description: >-
            Verifies service is running
         responses:
            '200':
               description: Success
            default:
               description: Service unavailable
   /logs:
      post:
         description: >-
            Request to publish log event
         requestBody:
            required: true
            content:
               'application/json':
                  schema:
                     $ref: '#/components/schemas/LogEvent'
         responses:
            '201':
               description: Created
            '400':
               description: Invalid log format
            default:
               description: System error
components:
   schemas:
      LogEvent:
         type: object
         properties:
            severity:
               type: string
            log_name:
               type: string
            event:
               type: object
               properties:
                  event_id:
                     oneOf:
                        - type: string
                        - type: number
                  timestamp:
                     type: string
                  env:
                     enum: [development, test, staging, production]
                  tenant_ref:
                     type: string
                  service:
                     type: string
                  process:
                     type: string
                  actor_ref:
                     type: string
                  target_ref:
                     type: string
                  action:
                     type: string
                  request:
                     oneOf:
                        - type: string
                        - type: object
                  response:
                     oneOf:
                        - type: string
                        - type: object
                  success:
                     type: boolean
                  auxiliary:
                     oneOf:
                        - type: string
                        - type: number
                        - type: object
               required:
                  - timestamp
                  - env
                  - tenant_ref
                  - service
                  - process
                  - action
                  - success
         required:
            - severity
            - log_name
            - event

Here is a clip of the JavaScript that initiates Swagger:

const options = {
   swaggerDefinition: {
      info: {
         title: 'REST API',
         version: '1.0.0',
         description: 'Example docs',
      },
   },
   apis: ['swagger.yaml'],
}

const specs = swaggerJSDoc(options)
this.app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs))
stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

daniloab commented 1 year ago

can you provide a repo to reproduce your error?

stale[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.