You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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代码:

  1. 从@nestjs/mongoose导入getModelToken
  2. 将@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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:07:15