TypeORM migration:generate无法生成迁移文件问题咨询
解决TypeORM 0.3.12迁移生成的两个常见问题
问题1:命令参数错误导致"Not enough non-option arguments"
你之前的命令参数顺序不符合TypeORM 0.3.x的要求,migration:generate必须先指定迁移文件的输出路径(必填位置参数),再传递-d、-n这类选项。
错误命令:
typeorm -d src/dataSource.ts migration:generate -n AddIndexToListing
正确命令格式:
typeorm migration:generate <迁移文件输出路径> -d <数据源文件路径> -n <迁移名称>
示例(生成到src/migration目录):
typeorm migration:generate src/migration/AddIndexToListing -d src/dataSource.ts
注:-n参数可省略,迁移文件名会自动以你指定的路径最后一段作为名称。
问题2:"Cannot use import statement outside a module"错误
全局typeorm命令无法直接解析TypeScript的import语法,必须使用TypeORM提供的TS专用命令,且匹配你的项目模块配置:
情况1:项目用CommonJS模块(tsconfig.json中module为CommonJS)
使用typeorm-ts-node-commonjs命令,参数顺序同样要先写迁移路径:
typeorm-ts-node-commonjs migration:generate src/migration/AddIndexToListing -d src/dataSource.ts
情况2:项目用ES模块(tsconfig.json中module为ESNext/ES2020等)
使用typeorm-ts-node-esm命令:
typeorm-ts-node-esm migration:generate src/migration/AddIndexToListing -d src/dataSource.ts
你之前用typeorm-ts-node-commonjs报错,核心原因是参数顺序错误——必须先指定迁移路径,再传递-d参数。
额外检查项
- 确认
src/dataSource.ts正确导出AppDataSource,且entities配置的路径(src/entity/*Table.ts)能匹配到你的实体文件 - 检查
tsconfig.json的include字段包含src/dataSource.ts、实体文件和迁移文件路径,确保TS能正常编译这些文件 - 优先使用项目内的TypeORM命令(比如
npx typeorm-ts-node-commonjs),避免全局版本与项目依赖版本不一致引发问题
内容的提问来源于stack exchange,提问作者Alicha Dinich
相关产品推荐
相关产品推荐

