简体   繁体   中英

Nest can't resolve dependencies of the VendorsService (?). Please verify whether [0] argument is available in thecurrent context

I am new to nest js and typescript also. Thanks in advance.

I am getting this error continuously.

Nest can't resolve dependencies of the VendorsService (?). Please verify whether [0] argument is available in thecurrent context.

Here is the code

App module

@Module({
  imports: [ UsersModule, VendorsModule],
})
export class ApplicationModule {}

controller

@Controller()
export class VendorsController {
    constructor(private readonly vendorService: VendorsService){}
@Post()
async create(@Body() createVendorDTO: CreateVendorDTO){
    this.vendorService.create(createVendorDTO);
}

@Get()
async findAll(): Promise<Vendor[]>{
    return this.vendorService.findAll();
}
}

Service

@Injectable()
export class VendorsService {

    constructor(@Inject('VendorModelToken') private readonly vendorModel: Model<Vendor>) {}

    async create(createVendorDTO: CreateVendorDTO): Promise<Vendor>{
        const createdVendor = new this.vendorModel(createVendorDTO);
        return await createdVendor.save();
    }
    async findAll(): Promise<Vendor[]>{
        return await this.vendorModel.find().exec();
    }
}

provider

export const usersProviders = [
  {
    provide: 'VendorModelToken',
    useFactory: (connection: Connection) => connection.model('Vendor', VendorSchema),
    inject: ['DbConnectionToken'],
  },
];

Module

@Module({
  providers: [VendorsService],
  controllers: [VendorsController],
})
export class VendorsModule {}

VendorsModule sould declare your provider (usersProviders) in its providers , otherwise Nestjs will never be able to inject it into your service.

Unless you wanted to declare it with UsersModule (I guess you did); in that case, UsersModule also needs it in its exports so it's made visible to other modules importing UsersModule.

It's either VendorsModule : usersProviders in providers ,

Or UsersModule : usersProviders in both providers and exports

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM