Nest无法解析VendorsService(?)的依赖关系。请验证当前上下文中是否有[0]参数

时间:2018-06-09 17:52:41

标签: node.js typescript nestjs

我也是js和打字稿的新手。提前谢谢。

我不断收到此错误。

Nest无法解析VendorsService(?)的依赖关系。请验证当前上下文中是否有[0]参数。

这是代码

应用模块

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

控制器

@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();
}
}

服务

@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();
    }
}

提供商

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

模块

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

1 个答案:

答案 0 :(得分:0)

VendorsModule可以在其providers中声明您的提供者(usersProviders),否则Nestjs将永远无法将其注入您的服务。

除非你想用UsersModule声明它(我猜你做了);在这种情况下,UsersModule在其exports中也需要它,因此导入UsersModule的其他模块可以看到它。

它是VendorsModuleproviders中的usersProviders,

UsersModuleprovidersexports

中的用户提供商