NestJS调用MinioClientService.upload报错is not a function怎么解决
排查步骤与解决方案
1. 优先检查构造函数装饰器的绑定位置
你当前AdminsService的构造函数里,@InjectRepository(AdminsRepository)装饰器直接放在了minioClientService参数的前面,该装饰器会绑定修饰紧跟在它后面的第一个构造参数,相当于你把AdminsRepository的实例注入给了minioClientService变量,自然调用upload方法会报错。
修正后的构造函数写法如下:
@Injectable() export class AdminsService { constructor( private minioClientService: MinioClientService, // 把@InjectRepository装饰器移到对应Repository参数的前面 @InjectRepository(AdminsRepository) private adminsRepository: AdminsRepository, ) {} // 剩余代码保持不变 }
2. 检查MinioClientModule的导出配置
确认你的minio-client.module.ts中,已经将MinioClientService加入到exports数组中,只有导出的服务才能被其他导入该模块的业务模块使用:
@Module({ // ... 其他配置(providers、imports等) exports: [MinioClientService] // 确保这里有导出对应的服务 }) export class MinioClientModule {}
3. 排查循环依赖问题
如果存在MinioClientModule导入AdminsModule、同时AdminsModule导入MinioClientModule的循环引用情况,需要用forwardRef处理依赖注入:
- 模块导入时用
forwardRef(() => MinioClientModule) - 服务注入时用
@Inject(forwardRef(() => MinioClientService))修饰对应参数
4. 检查导入路径是否正确
确认AdminsService中导入MinioClientService的路径完全正确,不存在导入其他同名服务、或者相对路径拼写错误的问题。
内容的提问来源于stack exchange,提问作者ShaSha
相关产品推荐
相关产品推荐

