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

NestJS依赖注入错误:QuizService无法解析QuizEntityRepository依赖

NestJS依赖注入错误排查:无法解析QuizService的依赖

我很少在网上提问,但这次实在无计可施,已搜索所有相关内容仍无法解决问题。我的NestJS应用出现依赖注入错误:

Error: Nest can't resolve dependencies of the QuizService (?). Please make sure that the argument "QuizEntityRepository" at index [0] is available in the AppModule context.
Potential solutions:

  • Is AppModule a valid NestJS module?
  • If "QuizEntityRepository" is a provider, is it part of the current AppModule?
  • If "QuizEntityRepository" is exported from a separate @Module, is that module imported within AppModule?

相关代码实现

QuizService代码

import { Repository } from "typeorm";
import { CreateQuizDto } from "./dto/createQuiz.dto";
import { QuizEntity } from "./quiz.entity";
import { InjectRepository } from "@nestjs/typeorm";
import { Injectable } from "@nestjs/common";

@Injectable()
export class QuizService{
    constructor(
        @InjectRepository(QuizEntity) private quizEntityRepository: Repository<QuizEntity>,
      ) {}

    async createNewQuiz (quiz: CreateQuizDto) {
        return await this.quizEntityRepository.save(quiz);
    }
    
}

QuizModule代码

import { Module } from '@nestjs/common';
import { QuizController } from './quiz.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { QuizService } from './quiz.service';
import { QuizEntity } from './quiz.entity';

@Module({
    imports: [TypeOrmModule.forFeature([QuizEntity])],
    controllers: [QuizController],
    providers: [QuizService],
    exports: [QuizService],
})
export class QuizModule {}

AppModule代码

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { QuizModule } from './modules/quiz/quiz.module';
import { QuizService } from './modules/quiz/quiz.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { typeOrmConfig } from './config/typeorm.config';

@Module({
  imports: [QuizModule, TypeOrmModule.forRoot(typeOrmConfig)],
  controllers: [AppController],
  providers: [AppService, QuizService],
})
export class AppModule {}

项目依赖

"dependencies": {
    "@nestjs/common": "^10.0.0",
    "@nestjs/core": "^10.0.0",
    "@nestjs/platform-express": "^10.0.0",
    "@nestjs/typeorm": "^10.0.2",
    "class-transformer": "^0.5.1",
    "class-validator": "^0.14.1",
    "pg": "^8.11.5",
    "postgres": "^3.4.4",
    "reflect-metadata": "^0.2.0",
    "rxjs": "^7.8.1",
    "typeorm": "^0.3.20"
  },
  "devDependencies": {
    "@nestjs/cli": "^10.0.0",
    "@nestjs/schematics": "^10.0.0",
    "@nestjs/testing": "^10.0.0",
    "@types/express": "^4.17.17",
    "@types/jest": "^29.5.2",
    "@types/node": "^20.3.1",
    "@types/supertest": "^6.0.0",
    "@typescript-eslint/eslint-plugin": "^6.0.0",
    "@typescript-eslint/parser": "^6.0.0",
    "eslint": "^8.42.0",
    "eslint-config-prettier": "^9.0.0",
    "eslint-plugin-prettier": "^5.0.0",
    "jest": "^29.5.0",
    "prettier": "^3.0.0",
    "source-map-support": "^0.5.21",
    "supertest": "^6.3.3",
    "ts-jest": "^29.1.0",
    "ts-loader": "^9.4.3",
    "ts-node": "^10.9.1",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.1.3"
  },

错误原因及解决方案

原因

问题出在AppModule的providers数组中重复声明了QuizService。

QuizService已经在QuizModule中注册为provider,且QuizModule已被AppModule导入。当你在AppModule的providers里再次添加QuizService时,Nest会尝试在AppModule上下文创建新的QuizService实例,但AppModule并未导入TypeOrmModule.forFeature([QuizEntity]),导致无法解析QuizEntityRepository依赖,从而抛出错误。

解决方案

直接删除AppModule的providers数组中的QuizService即可。导入QuizModule后,由于QuizModule已导出QuizService,AppModule可以直接使用该服务,无需重复注册。

修改后的AppModule代码:

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { QuizModule } from './modules/quiz/quiz.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { typeOrmConfig } from './config/typeorm.config';

@Module({
  imports: [QuizModule, TypeOrmModule.forRoot(typeOrmConfig)],
  controllers: [AppController],
  providers: [AppService], // 移除了重复的QuizService
})
export class AppModule {}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:51:00