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

NestJS出现UsersService依赖无法解析错误 循环依赖场景求助

NestJS循环依赖注入报错解决方案

核心错误原因

  • AuthModule没有对外导出AuthService,导致引入AuthModule的UsersModule无法获取到AuthService实例
  • 两个模块存在循环依赖,仅在AuthModule侧对UsersModule加了forwardRef处理,UsersModule侧引入AuthModule时未做相同处理
  • 若两个服务也存在互相注入的情况,服务注入时也需要加forwardRef声明

分步修改代码

1. 修改auth.module.ts,新增AuthService导出

import { forwardRef, Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { UsersModule } from '../users/users.module';
import { PassportModule } from '@nestjs/passport';
import { LocalStrategy } from './local.strategy';

@Module({
  imports: [forwardRef(() => UsersModule), PassportModule],
  providers: [AuthService, LocalStrategy],
  // 新增导出项,对外暴露AuthService
  exports: [AuthService]
})
export class AuthModule {}

2. 修改users.module.ts,对AuthModule也添加forwardRef处理

import { forwardRef, Module } from '@nestjs/common';
import { UsersService } from './users.service';
import { UsersController } from './users.controller';
import { UserSchema } from './schemas/user.schema';
import { MongooseModule } from '@nestjs/mongoose';
import { AuthModule } from 'src/auth/auth.module';


@Module({
  // 给AuthModule套上forwardRef处理循环依赖
  imports: [
    MongooseModule.forFeature([{name: 'User', schema: UserSchema}]),
    forwardRef(() => AuthModule)
  ],
  controllers: [UsersController],
  providers: [UsersService],
  exports: [UsersService]
})
export class UsersModule {}

3. 检查UsersService注入AuthService的写法

如果UsersService中直接注入了AuthService,需要用@Inject配合forwardRef声明:

import { Injectable, Inject, forwardRef } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { User } from './schemas/user.schema';
import { AuthService } from 'src/auth/auth.service';

@Injectable()
export class UsersService {
  constructor(
    @InjectModel('User') private userModel: Model<User>,
    // 注入循环依赖的服务需要加forwardRef
    @Inject(forwardRef(() => AuthService)) private authService: AuthService
  ) {}
  // 其余业务代码
}

修改完成后重启服务即可解决依赖解析错误。

内容的提问来源于stack exchange,提问作者Jessy_521

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:09:03