You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS TypeOrmModule注入Repository失败,提示找不到Connection依赖

报错根因

该报错是Nest依赖注入容器无法在TypeOrmModule上下文中找到Connection实例的provider,绝大多数场景是TypeORM与@nestjs/typeorm版本不匹配导致的,少数场景是自定义Repository写法不符合版本要求、依赖缓存异常导致。

解决方案

1. 核对版本匹配关系

不同版本的Nest TypeORM适配的TypeORM核心版本有强制要求,对应关系如下:

  • @nestjs/typeorm@8.x 及更低版本:仅适配 typeorm@0.2.x,该版本的连接实例名为 Connection
  • @nestjs/typeorm@9.x 及更高版本:仅适配 typeorm@0.3.x,该版本已废弃Connection,改用DataSource作为连接实例
    执行下方命令查看当前安装的版本:
npm list typeorm @nestjs/typeorm

如果版本不匹配,卸载后重新安装对应版本即可,示例命令如下:
适配@nestjs/typeorm 9.x:

npm install @nestjs/typeorm@9 typeorm@0.3

适配@nestjs/typeorm 8.x:

npm install @nestjs/typeorm@8 typeorm@0.2

2. 修正自定义Repository写法

如果你自行封装了UserRepository类,需要根据版本调整写法:

  • typeorm 0.2.x版本写法:
@EntityRepository(User)
export class UserRepository extends Repository<User> {}
  • typeorm 0.3.x版本已废弃@EntityRepository装饰器,需要改为自定义provider注册:
// user.repository.ts
export class UserRepository extends Repository<User> {
  constructor(dataSource: DataSource) {
    super(User, dataSource.createEntityManager());
  }
}

// user.module.ts 中注册自定义Repository
@Module({
  imports: [TypeOrmModule.forFeature([User])],
  providers: [UserService, UserRepository],
  exports: [UserService],
  controllers: [UserController],
})

3. 排查环境变量加载问题

如果你的TypeOrm配置依赖ConfigModule读取的环境变量,需要给ConfigModule开启全局配置,或者改为异步注册TypeOrmModule:

// 方案1:ConfigModule开启全局
ConfigModule.forRoot({
  isGlobal: true,
  // 其余配置
})

// 方案2:TypeOrmModule异步注册
TypeOrmModule.forRootAsync({
  useFactory: () => ({
    type: 'postgres',
    // 其余配置项
    synchronize: process.env.NODE_ENV !== 'prod',
    logging: process.env.NODE_ENV !== 'prod' && process.env.NODE_ENV !== 'test',
    entities: [User, Wiki],
  })
})

4. 清理依赖缓存

如果以上操作后仍报错,清理依赖缓存重新安装即可:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者Joseph Hwang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:45:03