我们正在使用纯ApiGatewayProxyEvent
而不是任何express
或其他中间件在aws-lambda上运行我们的打字稿服务。服务中的每个路由在AWS Lambda
中都有其自己的函数定义。
我们希望采用一种代码优先的方法来创建我们的OpenApi规范,类似于SpringFox
对Spring所做的操作,但不对框架使用任何运行时依赖项。
在当前的PoC中,我们使用typescript-rest
和typescript-rest-swagger
来注释控制器,然后调用swaggerGen -c ./swaggerConfig.json -p ./tsconfig.json
。这为我们提供了正确的OpenApi规范。
但是,当我们在环境中运行实际功能时,会出现以下异常:
Module not found: Error: Can't resolve 'typescript-ioc' in '/(...)/node_modules/typescript-rest/dist/server'
@ ./node_modules/typescript-rest/dist/server/server.js 105:18-72
@ ./node_modules/typescript-rest/dist/typescript-rest.js
@ ./src/controllers/myController.ts
@ ./src/handlers/myHandler.ts
@ ./src/lambda.ts
ERROR in ./node_modules/typescript-rest/dist/server/server.js
Module not found: Error: Can't resolve 'typescript-ioc/es6' in '(...)/node_modules/typescript-rest/dist/server'
@ ./node_modules/typescript-rest/dist/server/server.js 105:18-72
@ ./node_modules/typescript-rest/dist/typescript-rest.js
@ ./src/controllers/myController.ts
@ ./src/handlers/myHandler.ts
@ ./src/lambda.ts
我们的假设是,这是因为typescript-rest
是express
插件,因此需要服务在express
上运行。
有没有运行时相关性的规范创建方法吗?
如果没有,是否还有其他工具允许代码优先方法?