簡體   English   中英

錯誤:Nest 無法解析 UsersService 的依賴關系

[英]Error: Nest can't resolve dependencies of the UsersService

我收到這樣的錯誤:

錯誤:Nest 無法解析 UsersService (?) 的依賴關系。 請確保索引 [0] 處的參數用戶接口在用戶模塊上下文中可用。

潛在的解決方案: - 如果 Usersinterface 是提供者,它是當前 UsersModule 的一部分嗎?
- 如果用戶接口是從一個單獨的@Module 中導出的,那么該模塊是在 UsersModule 中導入的嗎?

 @Module({
imports: [ /* the Module containing Usersinterface */ ]
  })

對於這個問題,我得到了很多答案,但這些答案與我的問題幾乎沒有什么不同。在我的問題中,我在接口上遇到錯誤,而不是在任何 controller 或服務上。

這是用戶界面的代碼:

import * as mongoose from 'mongoose'

export interface Usersinterface  extends mongoose.Document {
    readonly username: string;
    readonly password: string;
}

這是用戶模塊的代碼:

@Module({
  imports:[],
  providers: [UsersService],
  controllers: [UsersController]
})
export class UsersModule {}

這是appmodule的代碼:

@Module({
  imports: [AppModule,UsersModule,MongooseModule.forRoot("mongodb://localhost:27017/test",{ useNewUrlParser: true })],
  controllers: [AppController],
  providers: [AppService]
})
export class AppModule {}

這是用戶服務的代碼:

@Injectable()
export class UsersService {
    private hashLength = 16;
    constructor(@Inject('Usersinterface') private readonly userModel:Model<Usersinterface>) {}

正如我剛剛在您的其他問題中回答的那樣,您需要為模塊提供可用提供程序的正確上下文。 為此,您需要將MongooseMOdule.forFeature([schemaObject])添加到您的UsersModuleimports數組中。 最后,它應該如下所示:

@Module({
  imports: [MongooseModule.forFeautre([{ name: 'Usersinterface', schema: UsersSchema }]) // you need to create the UsersSchema,
  controllers: [UsersController],
  providers: [UsersService],
})
export class UsersModule {}
@Injectable()
export class UsersService {
  private hasLength = 16;
  // make sure this string matches the value in the MongooseModule.forFeature's name property
  constructor(@InjectModel('Usersinterface') private readonly userModel: Model<UsersInterface>) {}

依賴注入存在問題,而不是您的界面存在問題。 盡管您尚未發布 app.component.ts 文件的代碼,但我認為,您很可能有一個類似的構造函數

constructor(private userService: UserService) {}

UserService注入。 問題是,您的UserService沒有在 AppModule 中提供,而是在UserModule提供 請改為在AppModule 中提供服務,或者僅在您在 UserModule聲明的控制器中注入UserService (這可能是最好的方法)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM