提问者:小点点

TS2749:“schema”引用了一个值,但在这里使用TypeScript定义Mongoose模型时被用作类型


我正在试图找出我在TypeScript项目中定义的猫鼬模型出了什么问题。 遵循本教程中使用Mongoose和TypeScript的强类型模型,我定义了这个模型:

import mongoose from 'mongoose';
const { Schema, Document } = mongoose;

export interface IDoctor extends Document {
    firstName: string;
    lastName: string;
}

const DoctorSchema: Schema = new Schema({
    firstName: {
        type: String,
        required: true
    },
    lastName: {
        type: String,
        required: true
    }
});

export default mongoose.model<IDoctor>('Doctor', DoctorSchema);

但TypeScript抱怨schemadocument引用了一个值,但在此处被用作类型

我使用“mongoose”:“^5.9.24”“@types/mongoose”:“^5.7.32”

我的tsconfig.json:

{
  "compilerOptions": {
    "extendedDiagnostics": false,
    "traceResolution": false,

    "noUnusedParameters": false,
    "noUnusedLocals": false,
    "allowUnusedLabels": false,

    "target": "es2017",
    "module": "esnext",
    "lib": [
      "es2019"
    ],
    "pretty": true,
    "sourceMap": true,
    "outDir": "dist",
    "importHelpers": true,
    "strict": true,
    "moduleResolution": "node",
    "esModuleInterop": true,
    "rootDir": "src",
    "noImplicitAny": false,
    "strictNullChecks": false,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "baseUrl": ".",
    "paths": {
      "*": [
        "node_modules/*",
        "src/types/*"
      ]
    },
    "allowSyntheticDefaultImports": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "resolveJsonModule": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "src/types/*"
  ]
}


共1个答案

匿名用户

mogoose似乎没有默认导出。 所以你应该这样做:

import * as mongoose from 'mongoose';

此外,还应导入类类型,如:

import {Schema, Document} from 'mongoose';