node.js - NestJS 在构建应用程序时快速修复 swagger 错误

标签 node.js typescript nestjs fastify

我正在使用fastify adapter

根据the documentation我已经安装了 fastify 的 swagger 适配器

npm install --save @nestjs/swagger fastify-swagger

当我导入 swagger 对象时

从 '@nestjs/swagger' 导入 { DocumentBuilder, SwaggerModule };

在构建应用程序阶段出现多个错误:

node_modules/@nestjs/swagger/dist/decorators/api-body.decorator.d.ts:4:35 - error TS2304: Cannot find name 'Omit'.

4 declare type RequestBodyOptions = Omit<RequestBodyObject, 'content'>;
                                    ~~~~

node_modules/@nestjs/swagger/dist/decorators/api-header.decorator.d.ts:3:43 - error TS2304: Cannot find name 'Omit'.

3 export interface ApiHeaderOptions extends Omit<ParameterObject, 'in'> {
                                            ~~~~

node_modules/@nestjs/swagger/dist/decorators/api-param.decorator.d.ts:4:33 - error TS2304: Cannot find name 'Omit'.

4 declare type ParameterOptions = Omit<ParameterObject, 'in' | 'schema'>;
                                  ~~~~

node_modules/@nestjs/swagger/dist/decorators/api-property.decorator.d.ts:2:45 - error TS2304: Cannot find name 'Omit'.

2 export interface ApiPropertyOptions extends Omit<SchemaObjectMetadata, 'name' | 'enum'> {
                                              ~~~~

node_modules/@nestjs/swagger/dist/decorators/api-property.decorator.d.ts:8:80 - error TS2344: Type '"type" | "enum" | "example" | "format" | "deprecated"' does not satisfy the constraint '"name" | "enum"'.
  Type '"type"' is not assignable to type '"name" | "enum"'.

8 export declare function ApiResponseProperty(options?: Pick<ApiPropertyOptions, 'type' | 'example' | 'format' | 'enum' | 'deprecated'>): PropertyDecorator;
                                                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

node_modules/@nestjs/swagger/dist/decorators/api-query.decorator.d.ts:4:33 - error TS2304: Cannot find name 'Omit'.

4 declare type ParameterOptions = Omit<ParameterObject, 'in' | 'schema'>;
                                  ~~~~

node_modules/@nestjs/swagger/dist/decorators/api-response.decorator.d.ts:3:46 - error TS2304: Cannot find name 'Omit'.

3 export interface ApiResponseMetadata extends Omit<ResponseObject, 'description'> {
                                               ~~~~

node_modules/@nestjs/swagger/dist/decorators/api-response.decorator.d.ts:9:48 - error TS2304: Cannot find name 'Omit'.

9 export interface ApiResponseSchemaHost extends Omit<ResponseObject, 'description'> {
                                                 ~~~~

node_modules/@nestjs/swagger/dist/document-builder.d.ts:20:14 - error TS2304: Cannot find name 'Omit'.

20     build(): Omit<OpenAPIObject, 'components' | 'paths'>;
                ~~~~

node_modules/@nestjs/swagger/dist/interfaces/schema-object-metadata.interface.d.ts:3:47 - error TS2304: Cannot find name 'Omit'.
                                                           ~~~~

有人知道该怎么做吗?

最佳答案

好的,我找到答案了。

打开文件tsconfig.json并添加以下行:

{
    compilerOptions: {
        "skipLibCheck": true
    }
}

我不确定这是最好的方法,因为它会在编译时跳过您的node_modules检查。但对于启动来说,它是有帮助的。

关于node.js - NestJS 在构建应用程序时快速修复 swagger 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59334710/

相关文章:

Angular:管道不起作用

NestJS 无法解析 LocalAuthGuard 的依赖关系

node.js - 在 ionic + Electron (5.0.0) 桌面应用程序中需要 Node 模块

node.js - async.eachLimit 仅针对指定的限制执行,而不是整个数组

node.js - `sass-loader` 需要 `node-sass` >=4。请安装兼容版本

mysql - 嵌套条件包含在 Sequelize 中

typescript - 使用 Typescript Compiler API 重写 typescript 文件

angular - 如果属性更改值,修改另一个组件的属性?

javascript - NestJS无法解析JWT_MODULE_OPTIONS的依赖关系(同样的问题,不同的解决方案)

node.js - 使多个 Node js dockerized 应用程序与 mongodb docker 通信