[英]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])
添加到您的UsersModule
的imports
數組中。 最后,它應該如下所示:
@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.