Nest 无法解析 UserService 的依赖关系(?)。请确保索引 [0] 处的参数“UserRepository”

问题描述 投票:0回答:1

我正在尝试使用护照开发登录流程,但出现以下错误。

ERROR [ExceptionHandler] Nest can't resolve dependencies of the UserService (?). Please make sure that the argument "UserRepository" at index [0] is available in the AppModule context.

Potential solutions:
- Is AppModule a valid NestJS module?
- If "UserRepository" is a provider, is it part of the current AppModule?
- If "UserRepository" is exported from a separate @Module, is that module imported within AppModule?
  @Module({
    imports: [ /* the Module containing "UserRepository" */ ]

app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UserModule } from './user/user.module';
import { User } from './user/user.entity';
import { UserController } from './user/user.controller';
import { UserService } from './user/user.service';
import { PassportModule } from '@nestjs/passport';
import { LocalStrategy } from './auth/local.strategy';

@Module({
  imports: [
    UserModule,
    PassportModule,

    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'gokitchen',
      entities: [User, Country],
      synchronize: false,
      autoLoadEntities: true,
    }),
  ],
  controllers: [AppController, UserController],
  providers: [AppService, UserService, LocalStrategy],
})
export class AppModule {}

用户.service.ts

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UserService {
  constructor(
    @InjectRepository(User)
    private userRepository: Repository<User>,
  ) {}

  async createUser(userData: Partial<User>): Promise<User> {
    const user = this.userRepository.create(userData);
    return await this.userRepository.save(user);
  }

  findAll(): Promise<User[]> {
    return this.userRepository.find();
  }

  findOne(email: string): Promise<User | null> {
    return this.userRepository.findOneBy({ email });
  }

  async remove(id: number): Promise<void> {
    await this.userRepository.delete(id);
  }
}

用户.module.ts

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UserService } from './user.service';
import { UserController } from './user.controller';
import { User } from './user.entity';

@Module({
  imports: [TypeOrmModule.forFeature([User])],
  providers: [UserService],
  controllers: [UserController],
  exports: [UserService],
})
export class UserModule {
  constructor(private userService: UserService) {}
}

node.js nestjs passport.js passport-local
1个回答
0
投票

如果您已经在

UserController
中添加了
UserModule
,则无需在
AppModule
中再次添加。这意味着您可以从
UserController
的元数据数组中删除
UserService
AppModule

如果您最终需要访问另一个模块中的

UserService
,您应该将
UserService
添加到
exports
UserModule
,然后将
UserModule
添加到需要访问的模块的
imports
访问。

© www.soinside.com 2019 - 2024. All rights reserved.