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

TypeORM生成迁移时报MissingDriverError驱动为undefined如何解决?

错误原因
  • 你的configuration.ts是适配NestJS ConfigModule的配置格式,导出的是返回配置对象的工厂函数,且TypeORM配置被嵌套在返回对象的database字段下。TypeORM CLI要求配置文件直接导出平级的TypeORM配置对象,无法识别嵌套结构和工厂函数,所以读取不到type字段,抛出驱动未定义错误。
  • 你运行迁移命令时未提前加载环境变量,process.env下的数据库配置为空也会导致参数读取异常。
  • 配置中migrations和migrationsDir路径写了绝对路径前缀/,会导致CLI找不到对应目录。
解决方案

方案一:新建CLI专用配置文件(更推荐,避免和业务配置耦合)

  1. 项目根目录新建ormconfig.ts,内容如下:
import * as dotenv from 'dotenv';
// 加载根目录.env文件的环境变量
dotenv.config();

export default {
  type: 'mariadb',
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT, 10),
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  entities: ['dist/**/*.entity{.ts,.js}'],
  synchronize: false,
  // 去掉绝对路径前缀
  migrations: ['src/migration/**/*.ts'],
  keepConnectionAlive: true,
  charset: 'utf8mb4',
  cli: {
    migrationsDir: 'src/migrations',
  },
};
  1. 安装必要依赖:
npm install dotenv mysql --save
# 若使用原生mariadb驱动可替换为npm install mariadb --save
  1. 修改package.json中的脚本配置:
"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js  --config ormconfig.ts",
"migration:generate":"npm run typeorm migration:generate -- -n"

方案二:修改现有配置文件适配CLI

如果不想单独维护配置文件,可修改src/config/configuration.ts:

import * as dotenv from 'dotenv';
import { join } from 'path';

dotenv.config();

// 单独导出平级的TypeORM配置供CLI调用
export const typeOrmConfig = {
  type: 'mariadb',
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT, 10),
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  entities: ['dist/**/*.entity{.ts,.js}'],
  synchronize: false,
  migrations: ['src/migration/**/*.ts'],
  keepConnectionAlive: true,
  charset: 'utf8mb4',
  cli: {
    migrationsDir: 'src/migrations',
  },
};

// 保留原有NestJS适配的配置导出
export default () => {
  return {
    database: typeOrmConfig,
  };
};

再修改package.json的typeorm脚本,指定读取的配置名称:

"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js  --config src/config/configuration.ts --config-name typeOrmConfig",
验证

修改完成后重新执行命令即可正常生成迁移文件:

npm run migration:generate -- softDeleteUser

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:06:02