NestJS集成JWT与Mongoose时UsersService依赖注入报错求助
问题解决:Nest无法解析UsersService的依赖
错误提示Nest can't resolve dependencies of the UsersService (?). Please make sure that the argument User at index [0] is available in the UsersModule context.的核心原因是你在UsersService中注入Mongoose模型时使用了错误的注入令牌。
错误点
你当前在user.service.ts中用@Inject(User.name)来注入模型,但NestJS与Mongoose集成时,需要使用官方提供的getModelToken()函数生成正确的注入令牌,而非直接使用User.name。
修改方案
修改user.service.ts代码:
- 从
@nestjs/mongoose导入getModelToken - 将
@Inject(User.name)替换为@Inject(getModelToken(User.name))
修改后的完整代码:
import { Injectable, Inject } from '@nestjs/common'; import { Model } from 'mongoose'; import { getModelToken } from '@nestjs/mongoose'; import { IUser } from './interfaces/user.interface'; // 确保路径与你的文件结构匹配 import { User } from './schemas/user.schema'; // 确保路径与你的文件结构匹配 @Injectable() export class UsersService { constructor( @Inject(getModelToken(User.name)) private userModel: Model<IUser>, ) {} async findOne(email: string): Promise<IUser | undefined> { return this.userModel.findOne({ email: email.toLowerCase() }).exec(); // 补充:findOne返回Query对象,调用exec()才能返回标准Promise } }
额外确认
你的UsersModule中MongooseModule.forFeature的配置是正确的,无需修改:
MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
内容的提问来源于stack exchange,提问作者miko25
相关产品推荐
相关产品推荐

