TypeScript转译JS后使用Typegoose遇User.email类型无效错误求助
Typegoose转译JS后"User.email"类型无效(undefined)错误解决
错误详情
Error: "User.email" 的类型无效!类型为:"undefined" [E009]
报错堆栈
at getModelForClass (/Users/user/Documents//node_modules/@typegoose/typegoose/src/typegoose.ts:89:58) at Object.<anonymous> (/Users/user/Documents//dist/model/user.model.js:193:49)
修复方案
- 检查TS转译配置:打开
tsconfig.json,确认emitDecoratorMetadata设为true。Typegoose依赖装饰器元数据识别类型,转译时没开这个选项会直接丢失类型信息,导致报错。 - 确认装饰器参数完整性:原TS代码里的
@prop装饰器,要确保转译后的JS中type参数没被错误移除。比如原代码@prop({ type: String }) email?: string;,转译后得保留type配置。 - 升级Typegoose版本:如果用的是旧版Typegoose,可能对JS转译后的语法支持有问题,换成最新稳定版试试。
- 显式指定属性类型:要是元数据还是识别失败,就在
@prop里手动指定类型,写成@prop({ type: () => String }) email?: string;,避免转译后类型丢失。
内容的提问来源于stack exchange,提问作者gelgit
相关产品推荐
相关产品推荐

