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

TypeORM搭配Jest运行报错:ormconfig已放根目录仍找不到连接配置

问题原因及解决方法


可能的原因1:TypeORM运行时工作目录与ormconfig.json所在目录不匹配

TypeORM自动查找配置文件时,默认读取进程运行的工作目录下的ormconfig文件,你可以在tests/setup.ts的beforeAll开头加一行代码确认工作目录:

console.log(process.cwd())

如果打印的路径不是你项目的根目录(和package.json同级的目录),就是工作目录不对导致的。
解决方法:
在jest.config.js中显式指定rootDir为项目根目录:

module.exports = {
  // 原有配置保留,新增下面这行
  rootDir: '.',
  preset: "ts-jest",
  testEnvironment: "node",
  // 其他原有配置...
}

可能的原因2:TypeORM版本为0.3.x+,已废弃ormconfig.json自动加载逻辑

TypeORM从0.3.0版本开始,不再支持自动读取ormconfig.json文件,官方改为推荐使用DataSource方式手动初始化连接。
解决方法:
要么降级到0.2.x版本,要么改用显式初始化的方式绕过自动读取逻辑:

// 直接导入你的ormconfig.json,手动选中test配置传入
import * as ormConfig from '../ormconfig.json'
import { DataSource } from 'typeorm'

let testDataSource: DataSource

beforeAll(async () => {
  const testConfig = ormConfig.find(item => item.name === 'test')
  testDataSource = new DataSource(testConfig)
  await testDataSource.initialize()
})

可能的原因3:存在优先级更高的ORM配置覆盖了json文件

TypeORM加载配置的优先级为:环境变量指定的配置路径 > ormconfig.env > ormconfig.js > ormconfig.ts > ormconfig.json,如果你项目根目录下有更高优先级的同名配置文件,或者环境变量中配置了TYPEORM_CONFIG指向其他路径,都会导致json配置不被读取。
解决方法:
删除根目录下其他ormconfig前缀的配置文件,检查环境变量中是否有TYPEORM相关的配置项,清空后重试。


临时绕过方案(最稳妥)

不管是什么原因导致的自动读取失败,都可以直接手动导入配置传入初始化方法,完全绕过TypeORM的自动查找逻辑,修改你的tests/setup.ts代码即可:

import { createConnection, getConnection } from "typeorm";
// 相对路径根据你的文件位置调整,确保能读到根目录的ormconfig.json
import * as ormConfig from '../ormconfig.json'

beforeAll(async () => {
  const testConfig = ormConfig.find(conn => conn.name === 'test')
  await createConnection(testConfig);
});

// 其他原有逻辑保留

额外注意:你的test连接配置里有拼写错误,synchroize少了一个n,正确属性名是synchronize,后续配置生效后会因为这个属性不识别报错,记得提前修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:24:03