Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 雀巢公司可以';t解析UserController的依赖项 当前行为_Typescript_Nestjs - Fatal编程技术网

Typescript 雀巢公司可以';t解析UserController的依赖项 当前行为

Typescript 雀巢公司可以';t解析UserController的依赖项 当前行为,typescript,nestjs,Typescript,Nestjs,试图在myUserController.ts中使用myUserService.ts和AuthService.ts,但出现以下错误: [ExceptionHandler]嵌套无法解析UserController(?,+)的依赖项。请确保索引[0]处的参数在当前上下文中可用。 带指令问题的最小再现 application.module.ts import { Module } from "@nestjs/common"; import { ApplicationController } from "

试图在myUserController.ts中使用myUserService.tsAuthService.ts,但出现以下错误:
[ExceptionHandler]嵌套无法解析UserController(?,+)的依赖项。请确保索引[0]处的参数在当前上下文中可用。

带指令问题的最小再现 application.module.ts
import { Module } from "@nestjs/common";
import { ApplicationController } from "controllers/application.controller";
import { ApplicationService } from "services/application.service";
import { AuthModule } from "./auth.module";
import { UserModule } from "./user.module";

@Module({
  imports: [
    AuthModule,
    UserModule,
  ],
  controllers: [
    ApplicationController,
  ],
  providers: [
    ApplicationService,
  ],
})
export class ApplicationModule {}
user.module.ts
import { Module } from "@nestjs/common";
import { UserController } from "controllers/user.controller";

@Module({
  controllers: [
    UserController,
  ],
})
export class UserModule {}
user.service.ts
import { Injectable } from "@nestjs/common";
import { InjectRepository } from "@nestjs/typeorm";
import { Repository } from "typeorm";
import { UserEntity } from "entities/user.entity";

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(UserEntity)
    private readonly repository: Repository<UserEntity>,
  ) {}

  async findAll(): Promise<UserEntity[]> {
    return await this.repository.find();
  }
}
auth.service.ts
import { Injectable } from "@nestjs/common";
import { JwtService } from "@nestjs/jwt";
import { TokenJwtInterface } from "interfaces/token-jwt.interface";

@Injectable()
export class AuthService {
  private tokenType;

  constructor(private readonly jwtService: JwtService) {
    this.tokenType = "bearer";
  }

  public generateTokenJwt(
    payload: object,
    expiresIn: number,
  ): TokenJwtInterface {
    const accessToken = this.jwtService.sign(payload);

    return {
      access_token: accessToken,
      token_type: this.tokenType,
      refresh_token: "",
      expires_in: expiresIn,
    };
  }
}
user.controller.ts
import {
  Get,
  Controller,
  Post,
  Body,
  HttpCode,
  HttpStatus,
} from "@nestjs/common";
import { UserService } from "services/user.service";
import { UserEntity } from "entities/user.entity";
import * as bcrypt from "bcryptjs";
import { AuthService } from "services/auth.service";

@Controller("/users")
export class UserController {
  constructor(
    private readonly userService: UserService,
    private readonly authService: AuthService,
  ) {}

  @Get()
  async root(): Promise<UserEntity[]> {
    return await this.userService.findAll();
  }
...
导入{
得到,
控制器,
邮递
身体,
HttpCode,
HttpStatus,
}来自“@nestjs/common”;
从“services/user.service”导入{UserService};
从“entities/user.entity”导入{UserEntity};
从“bcryptjs”导入*作为bcrypt;
从“services/auth.service”导入{AuthService};
@控制器(“/用户”)
导出类用户控制器{
建造师(
私有只读用户服务:用户服务,
专用只读authService:authService,
) {}
@得到()
异步根():承诺{
return等待this.userService.findAll();
}
...
改变行为的动机/用例是什么? 修正错误

环境 嵌套版本:5.1.0 对于工具问题: -节点版本:v8.11.3 -平台:Ubuntu
-IDE:VSC

您的
AuthService
必须是
UserModule

import { Module } from "@nestjs/common";
import { UserController } from "controllers/user.controller";

@Module({
   controllers: [
     UserController,
   ],
   components: [
     UserService,
     AuthService
   ],
   imports: [
     AuthModule 
   ]
})
export class UserModule {}
我一直认为导入一些模块就足够了,但根据我的经验,我总是必须在
组件
部分声明它


我还意识到你忘了在组件模块中声明你的
UserService

从概念上讲,我在NestJS依赖项中遇到了同样的问题,它与HttpService有关。这篇文章有解决方案
import { Module } from "@nestjs/common";
import { UserController } from "controllers/user.controller";

@Module({
   controllers: [
     UserController,
   ],
   components: [
     UserService,
     AuthService
   ],
   imports: [
     AuthModule 
   ]
})
export class UserModule {}