#typescript #serverless-framework #serverless #openapi #aws-serverless
#typescript #бессерверный фреймворк #бессерверный #openapi #aws-бессерверный
Вопрос:
Проблема заключается в следующем:
Я стремлюсь документировать бессерверный API AWS, используя бессерверную платформу с плагином open API для документации API.
Проблема, с которой я сталкиваюсь, заключается в том, что бессерверная конфигурация, созданная в файле serverless.ts, не имеет поля документации, в нем есть только это определение:
interface Http {
path: string;
method: string;
cors?: boolean | HttpCors;
private?: boolean;
async?: boolean;
authorizer?: HttpAuthorizer;
request?: HttpRequestValidation;
}
Шаги по воспроизведению проблемы:
-
Создайте бессерверный проект с шаблоном Typescript:
$ sls create -t aws-nodejs-typescript —path testName -n AppName
-
Добавить плагин openapi
plugins: ['serverless-webpack', 'serverless-openapi-documentation'],
-
Замените раздел функций в serverless.ts следующим:
functions: { hello: { handler: 'handler.hello', events: [ { http: { method: 'get', path: 'hello', documentation: { summary: "Create something" }, } } ] } }
В строке документации появится ошибка, подобная этой:
Тип ‘{ http: {метод: строка; путь: строка; }; документация: {сводка: строка; }; }’ не может быть присвоен типу ‘Событие’. Литерал объекта может указывать только известные свойства, а «документация» не существует в типе «Событие».
Однако, если вместо использования шаблона typescript (т. Е. aws-nodejs-typescript) мы используем шаблон yml (т. Е. aws-python), ключ документации может быть добавлен, и плагин open API работает должным образом.
Означает ли это, что плагин Open API еще не поддерживает Typescript? или, скорее, мне не хватает какой-либо конфигурации?
Спасибо!
Комментарии:
1. Сообщение об ошибке генерируется из-за компоновки typescript, а не из бессерверного плагина openapi-documentation.
2. Хотя это верно @BennyThomas, добавление @ts-ignore приводит к
serverless openapi generate
тому, что команда выдает ошибку :"service" property is missing in serverless.ts
. Кто-нибудь сталкивался с решением?