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

TypeORM v2升级v3后无法生成迁移,报TypeError读取'name'未定义

解决TypeORM v3迁移生成时的"Cannot read properties of undefined (reading 'name')"错误

针对你在TypeORM从v2迁移到v3后,迁移生成时出现的TypeError: Cannot read properties of undefined (reading 'name')错误(触发点在MysqlQueryRunner.changeColumn),且已排除实体含构造函数的情况,可尝试以下解决方案:

  • 检查实体字段装饰器配置
    确保所有实体的@Column()装饰器配置完整:

    • 避免使用空配置@Column({}),MySQL下需明确指定字段类型(如@Column('varchar', { length: 255 })),缺失类型可能导致元数据解析异常。
    • 排查是否使用了v3中废弃的字段选项,比如部分旧版配置项在v3中已被移除或调整。
  • 验证DataSource配置准确性

    • 确认dataSource.ts里的entities路径正确,确保所有需要生成迁移的实体都被加载(比如entities: [__dirname + '/../entities/**/*.ts']需匹配实际文件位置),漏加载实体会导致元数据缺失。
    • 检查type字段是否准确设置为'mysql',拼写错误会导致QueryRunner初始化异常。
  • 清理缓存并重置生成流程

    • 删除项目的缓存文件(如node_modules/.cache目录),避免旧版本元数据残留干扰。
    • 先执行yarn typeorm schema:drop(注意提前备份数据库数据!),再重新执行迁移生成命令,消除数据库schema与实体元数据不一致的问题。
  • 排查实体继承与关联关系

    • 若使用实体继承(如@TableInheritance),确认继承配置在v3中兼容,v3对继承逻辑有调整,可能需要修改装饰器参数。
    • 检查关联关系(@ManyToOne/@OneToMany等)的target设置,确保箭头函数正确指向关联实体,避免实体未正确加载导致的元数据问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:25:59