Nestjs 在controller中 导入多个service

本文介绍了在使用NestJS时遇到在Controller中导入多个Service导致的错误问题,以及如何解决这个问题。通过在User Controller中引入Role Service,并在对应的Module中正确导入Role模块和服务,成功解决了报错问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初次使用nestjs,在controller中引入俩个service发生报错报错

Error: Nest can't resolve dependencies of the UserController (UserService, ?). Please make sure that the argument RoleService at index [1] is available in the UserModule context.        

Potential solutions:
- If RoleService is a provider, is it part of the current UserModule?
- If RoleService is exported from a separate @Module, is that module imported within UserModule?
  @Module({
    imports: [ /* the Module containing RoleService */ ]
  })

    at Injector.lookupComponentInParentModules (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\injector.js:191:19)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at async Injector.resolveComponentInstance (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\injector.js:147:33)
    at async resolveParam (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\injector.js:101:38)
    at async Promise.all (index 1)
    at async Injector.resolveConstructorParams (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\injector.js:116:27)
    at async Injector.loadInstance (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\injector.js:80:9)
    at async Injector.loadController (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\injector.js:28:9)
    at async Promise.all (index 0)
    at async InstanceLoader.createInstancesOfControllers (E:\tiamo\configurableProgram\nest-demo\node_modules\@nestjs\core\injector\instance-loader.js:51:9)

解决办法
1.在user.controller中需要引入其他的role.service,

/*user.controller.js*/
import { Controller, Inject, Get, Post, Param, Req } from '@nestjs/common';
import { UserService } from './user.service';
import { RoleService } from '../role/role.service'
import { User } from './user.entity';
import { Role } from 'src/role/role.entity';

@Controller('user')
export class UserController {
    constructor(@Inject('UserService') private userService: UserService, private readonly roleService: RoleService) {

    }
    @Get('queryUser')
    async queryUser(@Req() request): Promise<any> {
        // debugger
        const promise = this.userService.queryUser(request);
        const result = await promise;
        return { code: 20000, total: result.length, data: result };
    }
 }

2.在module中需要引入role的module和service

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { RoleModule } from '../role/role.module'
import { UserService } from './user.service';
import { UserController } from './user.controller';
import { User } from './user.entity';
import { RoleService } from 'src/role/role.service';
@Module({
    imports: [TypeOrmModule.forFeature([User]), RoleModule],
    providers: [UserService, RoleService],
    controllers: [UserController],
    exports: [TypeOrmModule]
})
export class UserModule { }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值