node.js - erreurs swagger NestJS fastify lors de la construction de l'application


J'utilise l'adaptateur fastify

Selon la documentation, j'ai installé l'adaptateur Swagger pour Fastify

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

Et quand j'importe des objets Swagger

import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

Obtenez plusieurs erreurs lors de l'étape de création de l'application :

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'.
                                                           ~~~~

Est-ce que quelqu'un a des idées sur quoi faire ?

Réponse #1

D'accord, j'ai trouvé la réponse.

Ouvrez le fichier tsconfig.json et ajoutez cette ligne :

{
    compilerOptions: {
        "skipLibCheck": true
    }
}

Je ne suis pas sûr que ce soit la meilleure façon parce que cela contournera la vérification de vos node_modules lors de la compilation. Mais pour lancer, ça aide.