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 不会在更新时保存实体及其关系

NestJS typeorm - 无法创建实体

TypeORM - 如何在生产模式下创建新表并自动运行迁移?

TypeOrm:使用键的 uuid 数据类型而不是整数创建多对一关系

typeORM 未发现数据库架构更改 - 无法生成迁移。要创建新的空迁移,请使用“typeorm migration:create”命令

如何使用 Typeorm 创建与 Postgres 的连接