如何从TypeORM迁移列表中移除已删除的迁移文件记录
根因说明
该问题几乎均由已删除迁移的编译产物残留导致。TypeORM会读取配置路径下所有匹配规则的迁移文件,若仅删除了src目录下的迁移源码文件,未清理编译后dist目录中的对应迁移产物,或是迁移路径配置匹配到了其他存储旧迁移的目录,就会识别到已删除的旧迁移记录。
解决步骤
- 第一步:清理全部构建产物
删除项目下的dist(或你自定义的编译输出目录),重新执行项目编译命令,确保旧迁移的js/js.map/d.ts产物被完全清除。 - 第二步:核对迁移配置路径
打开你的TypeORM配置文件(ormconfig.json/ormconfig.ts/环境变量配置等),检查migrations字段的配置项,确认路径通配符没有匹配到备份目录、历史归档目录等非预期目录,同时不要同时配置src和dist两个目录的迁移路径,按照你的运行场景仅保留对应路径即可:- 用ts-node直接运行ts迁移:仅保留
src/migrations/**/*.ts这类源码路径 - 运行编译后的js迁移:仅保留
dist/migrations/**/*.js这类产物路径
- 用ts-node直接运行ts迁移:仅保留
- 第三步:清理残留缓存
手动删除项目下的.typeorm缓存目录(如果存在),以及node_modules/.cache目录,避免运行时读到缓存的迁移列表。如果使用ts-node运行迁移,可额外删除node_modules/.cache/ts-node目录,或者运行迁移时添加--transpile-only参数跳过缓存。 - 第四步:验证修复结果
执行typeorm migration:show命令确认旧迁移已经不在列表中,再执行typeorm migration:run即可正常运行新的迁移文件。
内容的提问来源于stack exchange,提问作者Tsering Norbu
相关产品推荐
相关产品推荐

