错误:Nest无法解析UsersService的依赖项

时间:2020-04-23 14:03:38

标签: typescript postman nestjs

我遇到这样的错误:

错误:Nest无法解析UsersService(?)的依赖项。请确认 在索引[0]处的参数Usersinterface在UsersModule上下文中可用。

可能的解决方案: -如果Usersinterface是提供者,它是否是当前UsersModule的一部分?
-如果从一个单独的@Module导出了Usersinterface,则是否导入了该模块 在UsersModule中?

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

我对此问题有很多答案,但是答案与我的问题几乎没有什么不同。在我的问题中,我的接口而不是任何控制器或服务都出现了错误。

这是用户界面的代码:

import * as mongoose from 'mongoose'

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

这是Usersmodule的代码:

@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 {}

这是UsersService的代码:

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

2 个答案:

答案 0 :(得分:1)

正如我在your other question中回答的那样,您需要为模块提供可用的提供程序的正确上下文。为此,您需要将MongooseMOdule.forFeature([schemaObject])添加到UsersModule的{​​{1}}数组中。最后,它应该像这样:

imports
@Module({
  imports: [MongooseModule.forFeautre([{ name: 'Usersinterface', schema: UsersSchema }]) // you need to create the UsersSchema,
  controllers: [UsersController],
  providers: [UsersService],
})
export class UsersModule {}

答案 1 :(得分:0)

依赖项注入存在问题,而不是您的界面存在问题。尽管您尚未发布app.component.ts文件的代码,但我认为很可能具有类似

的构造函数
constructor(private userService: UserService) {}

插入 UserService 。问题是,您没有在 AppModule 中提供 UserService ,但在 UserModule 中提供了 UserService 。请改为在 AppModule 中提供服务,或仅在您在 UserModule 中声明的控制器中注入 UserService (这可能是最好的方法)