Nest 无法解析存储库的依赖关系

Posted

技术标签:

【中文标题】Nest 无法解析存储库的依赖关系【英文标题】:Nest can't resolve dependencies of repository 【发布时间】:2020-06-04 06:07:50 【问题描述】:

我的 nestjs 应用程序出错。我无法弄清楚我的代码出了什么问题。一世 代码是这样的

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 

管理模块

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);

我得到的是这样的错误

错误:Nest 无法解析 AdminRepository (?) 的依赖项。请确保索引 [0] 处的参数 AdminRepository 在 AdminModule 上下文中可用。

可能的解决方案: - 如果 AdminRepository 是提供者,它是当前 AdminModule 的一部分吗? - 如果 AdminRepository 是从单独的 @Module 导出的,那么该模块是否会导入到 AdminModule 中?

【问题讨论】:

【参考方案1】:

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

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

您要避免使用$EntityClassNameRepository 创建一个类

【讨论】:

该死的......保留名称应该抛出错误或其他东西。

以上是关于Nest 无法解析存储库的依赖关系的主要内容,如果未能解决你的问题,请参考以下文章