NestJS+Sequelize跨模块共享Repository依赖注入报错求助
解决NestJS跨模块注入自定义Sequelize Repository的问题
我是NestJS新手,使用NestJS with Sequelize开发应用,需要在instituteAcademics模块的CreateInstituteHandler中注入users模块的UsersRepository来验证用户信息,但出现了依赖注入错误。
问题根源
你当前的UsersModule仅导出了SequelizeModule,但自定义的UsersRepository属于独立的Provider,必须显式导出才能被其他模块识别并注入。
解决方案
步骤1:修改UsersModule的导出配置
更新users.module.ts,将UsersRepository加入exports数组:
const repositories: Provider[] = [UsersRepository]; const entities = [Users, UserAddresses, UserContacts]; const controllers = [UsersController]; const handlers: Provider[] = [GetUsersHandler, CreateUserHandler]; @Module({ imports: [CqrsModule, SequelizeModule.forFeature([...entities])], controllers, providers: [...handlers, ...repositories], exports: [SequelizeModule, UsersRepository], // 新增UsersRepository导出 }) export class UsersModule {}
关键说明
SequelizeModule.forFeature([...entities])仅生成对应模型的Provider(供@InjectModel(Users)注入使用),导出它只能让其他模块直接操作模型,无法注入你自定义的UsersRepository。- 自定义封装的
UsersRepository属于独立Provider,必须显式添加到exports中,才能让导入UsersModule的InstituteAcademicsModule获取到这个依赖,完成CreateInstituteHandler中的注入。
验证
确认InstituteAcademicsModule已正确导入UsersModule(你当前代码已完成这一步),重启应用后,依赖注入错误即可解决。
内容的提问来源于stack exchange,提问作者Shantanu Tomar
相关产品推荐
相关产品推荐

