我遇到这样的错误:
错误: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>) {}
答案 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 (这可能是最好的方法)