NestJS中TypeORM迁移命令无法传入迁移名称参数求助
解决TypeORM迁移命令无法传入参数的问题
问题分析
你的migration:generate命令中使用了$npm_config_name来获取迁移名称,但之前的传参方式不符合npm配置变量的使用规则,导致无法正确替换变量。
解决方案
方案1:正确使用npm配置变量传参
保持现有package.json命令不变,执行命令时通过--name=迁移名称的形式赋值:
npm run migration:generate --name=AddUserTable
这种方式会将AddUserTable赋值给$npm_config_name,脚本执行时会自动替换路径中的变量。
方案2:改用直接传递参数的方式(推荐)
修改package.json中的migration:generate命令,移除$npm_config_name,保留迁移目录路径:
"migration:generate": "./node_modules/.bin/ts-node ./node_modules/.bin/typeorm migration:generate -d src/database/type-orm-config-migrations.ts ./src/database/migrations/"
执行命令时,通过--将参数传递给脚本本身:
npm run migration:generate -- AddUserTable
--是npm的特殊语法,用于区分npm自身参数和传递给脚本的参数,后面的AddUserTable会直接追加到迁移路径后,生成./src/database/migrations/AddUserTable文件。
方案3:优化命令配置(更简洁)
利用已有的typeorm命令配置,简化migration:generate:
"typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js", "migration:generate": "npm run typeorm -- migration:generate -d src/database/type-orm-config-migrations.ts ./src/database/migrations/"
执行命令同样使用:
npm run migration:generate -- AddUserTable
为什么之前的命令无效?
npm run migration:generate --name:缺少具体的赋值内容,必须用--name=xxx的形式给npm配置变量赋值npm run migration:generate -name:npm配置变量参数需要以--开头,而非-,且同样缺少赋值npm run migration:generate name:这种方式的参数会被npm接收,不会自动赋值给$npm_config_name,不符合配置变量的传递规则
内容的提问来源于stack exchange,提问作者nick5500
相关产品推荐
相关产品推荐

