TypeORM 不会在由 TypeORM 创建的项目中生成迁移
Posted
技术标签:
【中文标题】TypeORM 不会在由 TypeORM 创建的项目中生成迁移【英文标题】:TypeORM don't generate migration in project created by TypeORM 【发布时间】:2021-12-05 02:26:51 【问题描述】:我正在使用模板生成器来创建项目,但是当我尝试生成模板时它退出并出错
预期行为
使用 sql 脚本生成迁移
实际行为
$ C:\Users\alexa\lab\ProjectTypeOrm\node_modules\.bin\typeorm migration:generate -n User
Error during migration generation:
C:\Users\myname\lab\ProjectTypeOrm\src\entity\User.ts:1
import Entity, PrimaryGeneratedColumn, Column from "typeorm";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:988:16)
at Module._compile (internal/modules/cjs/loader.js:1036:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32)
at Function.Module._load (internal/modules/cjs/loader.js:778:12)
at Module.require (internal/modules/cjs/loader.js:961:19)
at require (internal/modules/cjs/helpers.js:92:18)
at C:\Users\alexa\lab\ProjectTypeOrm\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:42:39
at Array.map (<anonymous>)
at Object.importClassesFromDirectories (C:\Users\alexa\lab\ProjectTypeOrm\node_modules\typeorm\util\DirectoryExportedClassesLoader.js:42:10)
error Command failed with exit code 1.
复制步骤
typeorm init --name ProjectTypeOrm --database mysql --express --docker
cd ProjectTypeOrm
docker-compose up
yarn
yarn typeorm migration:create -n User
yarn typeorm migration:generate -n User
我的环境
Dependency | Version |
---|---|
Operating System | Windows 10 Home |
Node.js version | 14.17.6 |
Typescript version | 3.3.3333 |
TypeORM version | 0.2.38 |
Yarn | 1.22.11 |
【问题讨论】:
【参考方案1】:问题是您正在使用 NodeJS 运行 Typeorm CLI,但您的实体仍然是未编译的 Typescript 文件。解决此问题的一种方法是使用 ts-node
运行 CLI。
npx ts-node node_modules\typeorm\cli.js migration:generate -n User
如果您经常使用此命令,您可以将自定义脚本添加到您的 package.json
,这样您就不必每次都输入整个内容。
"scripts":
"orm": "ts-node node_modules/typeorm/cli.js"
,
"devDependencies" :
"ts-node": "^10"
然后在你的终端中调用它。
npm run orm -- migration:generate -n User
【讨论】:
它对我有用!谢谢你:)以上是关于TypeORM 不会在由 TypeORM 创建的项目中生成迁移的主要内容,如果未能解决你的问题,请参考以下文章
TypeORM - 如何在生产模式下创建新表并自动运行迁移?
TypeOrm:使用键的 uuid 数据类型而不是整数创建多对一关系
typeORM 未发现数据库架构更改 - 无法生成迁移。要创建新的空迁移,请使用“typeorm migration:create”命令