swagger-jsdoc icon indicating copy to clipboard operation
swagger-jsdoc copied to clipboard

Implemented on Lambda Handler Functions yields missing info object error!

Open pjcjonas opened this issue 2 years ago • 4 comments

Describe the bug When running the swagger-jsdoc command on the definition file I keep getting:

$> yarn swagger-jsdoc -d ./swaggerDef.js
yarn run v1.22.17
$ /Userscolldude/apihhooks/app/node_modules/.bin/swagger-jsdoc -d ./swaggerDef.js
Definition file should contain an info object!
More at http://swagger.io/specification/#infoObject

To Reproduce Steps to reproduce the behavior: 1: Create lambda handler method 2: Add swagger or openapi commend. 3: create SW Deffinition file referencing the handler file.

// IMPORTS GO HERE

/**
 * @openapi
 * /:
 *   get:
 *     description: Welcome to swagger-jsdoc!
 *     responses:
 *       200:
 *         description: Returns a mysterious string.
 */
export const handler = async (request) => {
  try {
    
    // LOGIC GOES HEREE

    return responseSuccess({ data: subscription })
  } catch (error) {
    return error
  }
}

deffinition file:

const swaggerJsdoc = require('swagger-jsdoc')

const options = {
  swaggerDefinition: {
    openapi: '3.0.0',
    info: {
      title: 'Hello World',
      version: '1.0.0',
    },
  },
  apis: ['./webhooks/webhookscreate.js'],
}

const openapiSpecification = swaggerJsdoc(options)

Expected behavior I am expecting a swagger json output to use with swagger ui

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Mac
  • Node: v14.18.3
  • Yarn: 1.22.17
  • NPM: 6.14.15

I am looking for a way to generate Swagger deffinition files to use with swagger UI in the same way that .net core uses Swashbuckle.

pjcjonas avatar Apr 19 '22 10:04 pjcjonas

Hi, @pjcjonas

Seems you have a project named /apihhooks/app/. Can you provide a tiny repo reproducing the error that are you getting it?

daniloab avatar Apr 19 '22 11:04 daniloab

I sort that out ASAP, in the mean time I fixed it by creating the swagger.js file below and running node swagger.js that then generates the json file for me included at the end:

const express = require("express");
const swaggerJSDoc = require("swagger-jsdoc");
const app = express();
const fs = require("fs");

const options = {
	definition: {
		openapi: "3.0.0",
		info: {
			title: "Hello World",
			description: "A sample API",
			version: "1.0.0",
		},
	},
	apis: ["./api*.js"],
};

const spec = swaggerJSDoc(options);

// ADDED THIS LINE
fs.writeFileSync("./swagger.json", JSON.stringify(spec));

OUTPUT

{
	"openapi": "3.0.0",
	"info": {
		"title": "Hello World",
		"description": "A sample API",
		"version": "1.0.0"
	},
	"paths": {
		"/": {
			"get": {
				"description": "QQQQ Welcome to swagger-jsdoc!",
				"responses": {
					"200": { "description": "Returns a mysterious string." }
				}
			}
		}
	},
	"components": {},
	"tags": []
}

pjcjonas avatar Apr 19 '22 12:04 pjcjonas

Awesome, I was debugging here. So, can we consider that this is working for you?

daniloab avatar Apr 19 '22 12:04 daniloab

I works when I used the node index.js method using fs to write a file to the file system, but not the yarn swagger-jsdoc method.

So its working in a way but not sure if it is suppose to work using the yarn swagger-jsdoc by referencing the definition file and supplying an output

https://github.com/pjcjonas/swagger-jsodc-test/tree/master

pjcjonas avatar Apr 19 '22 12:04 pjcjonas