【问题标题】:NestJs Swagger: Cannot find module - (external type not found)NestJs Swagger:找不到模块-(找不到外部类型)
【发布时间】:2020-04-25 12:40:32
【问题描述】:

我有一个这样的实体,我在其中定义了一个timestamp 字段,它是一个luxon DateTime

import { DateTime } from 'luxon'
import { Table, Column, Model, DataType } from 'sequelize-typescript'
import Sequelize from 'sequelize'
import { ApiProperty } from '@nestjs/swagger'

@Table({})
export default class MyModel extends Model<MyModel> {
  @ApiProperty({type: () => DateTime})
  @Column({
    type: DataType.DATE,
  })
  timestamp: DateTime
}

我的 tsconfig 如下所示:

{
  "compilerOptions": {
    "module": "CommonJS",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "esModuleInterop": true,
    "target": "ES6",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    "noUnusedLocals": true,
    "moduleResolution": "Node"
  },
  "exclude": ["node_modules", "dist"]
}

当我尝试启动 NestJs 服务器时,swagger 插件会尝试从我的实体元数据中获取类型,这会导致它尝试和 require '../../../node_modules/@types/luxon/index' luxon 类型。

类型已安装,我可以看到它们。他们似乎也被我的 vscode 识别了。

但是,我得到了错误:

(node:272) UnhandledPromiseRejectionWarning: Error: Cannot find module '../../../node_modules/@types/luxon/index'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.type (projectDir\dist\src\usage\entities\register-read.entity.js:24:158)
    at SchemaObjectFactory.mergePropertyWithMetadata (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:86:38)
    at modelProperties.map.key (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:55:35)
    at Array.map (<anonymous>)
    at SchemaObjectFactory.exploreModelSchema (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:54:52)
    at SchemaObjectFactory.createNotBuiltInTypeReference (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:117:37)
    at SchemaObjectFactory.mergePropertyWithMetadata (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:93:25)
    at modelProperties.map.key (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:55:35)
    at Array.map (<anonymous>)
    at SchemaObjectFactory.exploreModelSchema (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:54:52)
    at SchemaObjectFactory.createNotBuiltInTypeReference (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:117:37)
    at SchemaObjectFactory.mergePropertyWithMetadata (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:93:25)
    at modelProperties.map.key (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:55:35)
    at Array.map (<anonymous>)
    at SchemaObjectFactory.exploreModelSchema (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:54:52)
    at SchemaObjectFactory.createNotBuiltInTypeReference (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:117:37)
    at SchemaObjectFactory.mergePropertyWithMetadata (projectDir\node_modules\@nestjs\swagger\dist\services\schema-object-factory.js:93:25)

【问题讨论】:

  • 我也有同样的问题。你找到答案了吗??

标签: typescript swagger nestjs


【解决方案1】:

似乎是由 swagger/versions > 4.09 中的损坏代码引起的

【讨论】:

    猜你喜欢
    • 2021-01-18
    • 2021-08-12
    • 2020-06-22
    • 2020-08-02
    • 1970-01-01
    • 2022-12-24
    • 2015-10-08
    • 2020-02-04
    • 1970-01-01
    相关资源
    最近更新 更多