Гнездо не может разрешить зависимости хранилища - PullRequest
0 голосов
/ 20 февраля 2020

Я получил ошибку в своем приложении js. Я не могу понять, что искажается с моим кодом. I Коды выглядят примерно так:

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

И что я получаю, это ошибка, подобная этой

Ошибка: Nest не может разрешить зависимости AdminRepository (?). Убедитесь, что аргумент AdminRepository по индексу [0] доступен в контексте AdminModule.

Потенциальные решения: - Если AdminRepository является поставщиком, является ли он частью текущего AdminModule? - Если AdminRepository экспортируется из отдельного модуля @Module, импортируется ли этот модуль в AdminModule?

1 Ответ

1 голос
/ 20 февраля 2020

Мне кажется, проблема в том, что вы даете провайдеру имя: AdminRepository. Вполне вероятно, что внутренне TypeOrm использует это имя для создания хранилища для сущности Admin и, следовательно, имени cla sh.

Если вы переименуете класс своего провайдера во что-нибудь еще (например, AdminRepo или AdminService), ошибка должна go исчезнуть. Или другое, что нужно сделать, это переименовать класс сущности из Admin во что-то другое.

Чего вы хотите избежать, так это создания класса с ${EntityClassName}Repository

...