NestJS搭配TypeORM使用时ormconfig.json无法被识别该如何解决?
问题根因
你遇到的报错本质是TypeORM CLI执行命令时默认查找名为default的连接配置,但你的ormconfig.json中定义的两个连接名称为dev和prod,不存在default命名的连接,因此触发找不到默认连接的报错。
解决方案
可以根据你的使用习惯选择以下任意一种方案修复:
方案1:执行CLI命令时指定连接名
运行迁移相关命令时增加-c(即--connection)参数指定要使用的连接名即可,示例命令:
- 开发环境生成迁移:
typeorm migration:generate -n 你的迁移名称 -c dev - 开发环境执行迁移:
typeorm migration:run -c dev - 生产环境对应命令把参数中的
dev替换为prod即可
方案2:封装命令到package.json避免重复输入参数
在package.json的scripts字段中提前封装好带连接名的命令:
{ "scripts": { "migration:gen:dev": "typeorm migration:generate -c dev -n", "migration:run:dev": "typeorm migration:run -c dev", "migration:gen:prod": "typeorm migration:generate -c prod -n", "migration:run:prod": "typeorm migration:run -c prod" } }
后续直接执行npm run migration:gen:dev 迁移名称这类命令即可,无需手动输入连接参数。
方案3:排查ormconfig加载问题
如果执行typeorm config:show命令无法打印出你配置的dev、prod连接,说明配置文件没有被正确识别,按以下步骤排查:
- 确认
ormconfig.json放在项目根目录,和package.json、tsconfig.json同级 - 若配置文件不在根目录,执行命令时增加
--config参数指定路径,例如typeorm migration:run --config ./src/ormconfig.json -c dev - 若使用TypeScript执行CLI命令,需用ts-node调用CLI,示例:
ts-node ./node_modules/typeorm/cli.js migration:run -c dev,如果项目有路径别名还需加上-r tsconfig-paths/register参数
单配置场景修复方案
如果你后续切换回单环境配置,只要把配置中的name字段删掉,或者设置为"name": "default",CLI就能自动识别到默认连接。
内容的提问来源于stack exchange,提问作者Shiladitya Thakur
相关产品推荐
相关产品推荐

