sun*_*aem 3 javascript node.js typescript typeorm nestjs
我的 nestjs 应用程序出错。我无法弄清楚我的代码有什么问题。我的代码是这样的
应用模块
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 {}
Run Code Online (Sandbox Code Playgroud)
管理模块
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 {}
Run Code Online (Sandbox Code Playgroud)
管理库
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);
}
Run Code Online (Sandbox Code Playgroud)
我得到的是这样的错误
错误:Nest 无法解析 AdminRepository (?) 的依赖项。请确保索引 [0] 处的参数 AdminRepository 在 AdminModule 上下文中可用。
潜在的解决方案: - 如果 AdminRepository 是一个提供者,它是否是当前 AdminModule 的一部分?- 如果 AdminRepository 是从单独的 @Module 导出的,那么该模块是否导入到 AdminModule 中?
小智 6
我认为问题在于您给提供者的名称:AdminRepository. 很可能,内部TypeOrm正在使用该名称为Admin实体创建存储库,因此名称冲突。
如果您将提供程序类重命名为其他任何名称(例如AdminRepo或AdminService),错误应该会消失。或者另一件事是将实体类从重命名为Admin其他名称。
你想避免的是创建一个类 ${EntityClassName}Repository
| 归档时间: |
|
| 查看次数: |
2228 次 |
| 最近记录: |