首页 > 解决方案 > Nest can't resolve dependencies of repository

问题描述

I got error on my nestjs app. I cant figure out whats wring with my code. I The codes is something like this

AppModule

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AdminModule } from './components/admin.modules';

@Module({
    imports: [
        AdminModule,
        TypeOrmModule.forRoot({
          type: 'postgres',
          host: process.env.DATABASE_HOST,
          username: process.env.DATABASE_USERNAME,
          password: process.env.DATABASE_PASSWORD,
          database: process.env.DATABASE_NAME,
          port: parseInt(process.env.DATABASE_PORT),
        }),
    ],
})
export class AppModule {}

AdminModule

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';

import { Admin } from './admin.entity';
import { AdminRepository } from './admin.repository';

@Module({
    imports: [TypeOrmModule.forFeature([Admin])],
    providers: [AdminRepository],
})
export class AdminModule {}

AdminRepository

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';

import { RepositoryBase } from '../../common/base/repository.base';
import { Admin } from './admin.entity';

@Injectable()
export class AdminRepository extends RepositoryBase<Admin> {
    constructor(@InjectRepository(Admin) private readonly repo: Repository<Admin>) {
        super(repo);
}

And what i get is error like this

Error: Nest can't resolve dependencies of the AdminRepository (?). Please make sure that the argument AdminRepository at index [0] is available in the AdminModule context.

Potential solutions: - If AdminRepository is a provider, is it part of the current AdminModule? - If AdminRepository is exported from a separate @Module, is that module imported within AdminModule?

标签: javascriptnode.jstypescriptnestjstypeorm

解决方案


我认为问题在于您给提供者的名称:AdminRepository. 很可能,内部TypeOrm使用该名称为Admin实体创建存储库,因此名称冲突。

如果您将提供程序类重命名为其他任何名称(例如AdminRepoAdminService),错误应该会消失。或者另一件事是将实体类重命名为Admin其他名称。

你要避免的是创建一个类${EntityClassName}Repository


推荐阅读