NestJS使用TypeORM执行migration:create提示缺少path参数问题
问题原因
你遇到的是TypeORM版本迭代带来的配置规则变更,和配置语法书写本身无关:
cli.migrationsDir是TypeORM 0.2.x旧版本的专属配置项,该版本下CLI会自动读取这个字段作为迁移文件的默认生成路径,你参考的未同步更新的旧教程对应的就是这个版本的操作逻辑。- 你当前使用的是0.3.0及以上的新版本,这个版本重构了整个CLI模块,完全移除了
cli字段下所有配置项的支持,migration:create命令不再自动读取配置里的默认路径,必须显式传入文件生成路径作为必填位置参数,你看到的Not enough non-option arguments: got 0, need at least 1报错就是提示缺少这个必填路径参数。 - 你在新版官方文档里搜不到
cli.migrationsDir字段是正常的,这个配置项已经被正式废弃,不属于新版数据源配置的支持范围。
可用解决方案
方案1:直接传参执行
你目前使用的命令完全符合新版要求,可以正常生成迁移文件:
yarn typeorm migration:create ./src/migrations/UserMigration -o
其中-o参数表示生成js格式的迁移文件,和你开发环境下读取*.entity.js的配置匹配,不会出现运行迁移时找不到文件的问题。
方案2:封装脚本简化操作
如果不想每次执行都重复输入长路径,可以在package.json里封装自定义脚本,省去重复写路径的步骤:
{ "scripts": { "typeorm": "NODE_ENV=development typeorm-ts-node-esm", "migration:create": "yarn typeorm migration:create ./src/migrations/$npm_config_name -o" } }
后续需要新建迁移时,只需要执行以下命令即可,效果和手动传入全路径完全一致:
yarn migration:create --name=UserMigration
额外注意事项
你当前配置里的migrations: ['migrations/*.js']匹配规则需要和迁移文件的实际编译输出路径对齐:如果src/migrations下的文件编译后输出到dist/migrations目录,记得调整匹配规则为对应路径,否则后续执行migration:run时会出现找不到迁移文件的问题。
内容的提问来源于stack exchange,提问作者Dora
相关产品推荐
相关产品推荐

