我正在尝试在ConfigService
中使用users.module.ts
,但是我得到了
错误:Nest无法解析UsersService的依赖关系(UserRepository,HttpService 、?)。请确保在用户模块上下文中索引[2]处的参数ConfigService可用。
可能的解决方案:
我已经在我的UsersModule中导入了ConfigModule,但是仍然无法正常工作:(
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({
expandVariables: true,
}),
TypeOrmModule.forRoot(),
UsersModule,
AuthModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
users.module.ts
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule, HttpModule, TypeOrmModule.forFeature([User])],
controllers: [UsersController],
providers: [UsersService],
exports: [UsersService],
})
export class UsersModule {}
users.service.ts
export class UsersService {
constructor(
@InjectRepository(User)
private readonly userRepository: Repository<User>,
private readonly httpService: HttpService,
private readonly configService: ConfigService,
) {}
}
答案 0 :(得分:0)
您遇到了一些麻烦(我也经历了同样的痛苦)。 最佳做法是创建一个自定义存储库来处理数据库逻辑。
首先声明一个UserRepository
:
@EntityRepository(User)
export class UserRepository extends Repository<User> {
// add your custom db related method here later..
}
然后在您的AppModule
中,您需要这样声明实体:
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: process.env.DB_HOSTNAME || 'localhost',
port: Number.parseInt(process.env.DB_PORT) || 3306,
username: process.env.DB_USERNAME || 'root',
password: process.env.DB_PASSWORD || 'mysql',
database: process.env.DB_NAME || 'nestjs',
synchronize: process.env.DB_SYNCHRONIZE === 'true' || true,
keepConnectionAlive: true,
entities: [
User
]
})
...
然后在您的UsersModule
中声明您的存储库:
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule, HttpModule, TypeOrmModule.forFeature([UserRepository])],
controllers: [UsersController],
providers: [UsersService],
exports: [UsersService],
})
export class UsersModule {}
答案 1 :(得分:0)
您仍然必须在users.module.ts
的提供程序中声明ConfigService。请参阅下面的示例。
app.module.ts
@Module({
imports: [
ConfigModule.forRoot({
expandVariables: true,
}),
TypeOrmModule.forRoot(),
UsersModule,
AuthModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
users.module.ts
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [ConfigModule, HttpModule, TypeOrmModule.forFeature([UserRepository])],
controllers: [UsersController],
providers: [UsersService, ConfigService],
exports: [UsersService],
})
export class UsersModule {}
希望这会有所帮助。
谢谢。