TypeORM 命令不返回任何内容

Posted

技术标签:

【中文标题】TypeORM 命令不返回任何内容【英文标题】:TypeORM commands return nothing 【发布时间】:2021-06-10 18:21:15 【问题描述】:

我有一个带有 TypeORM 的 Nest 项目。几个月前,我设置了我的数据库,但我不再测试数据库(运行迁移、播种、删除模式等)。 现在,我正在尝试运行任何 TypeORM 命令,但没有任何反应。

我尝试用这两个运行 TypeORM:

ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js
node --require ts-node/register ./node_modules/typeorm/cli.js

巢:v7.4 嵌套类型ORM:v7.1.5 TypeORM:v0.2.24(但 CLI 返回 v6.14.11)

哦,差点忘了,我意识到我的 Node 已经过时了,在 v13 中,然后我更新到 v14,所以可能它破坏了某些包或构建,我不知道。

【问题讨论】:

【参考方案1】:

你的问题很可能是this bug引起的。

解决办法是降级Node或者升级pg包。

【讨论】:

【参考方案2】:

可能有帮助的几点:

TypeORM 对生成的 JS 代码进行操作。在运行迁移或架构日志命令之前先构建项目。 必须在构建输出目录中生成一个 ormconfig.js 文件。确保文件在那里。 检查 ormconfig 文件中的 glob 模式。我首先犯了错误,并为 Typescript 文件定义了通配符。但同样,TypeORM CLI 正在处理构建输出,因此 glob 模式必须以 JS 文件为目标。如果我没记错的话,TypeORM schema:log 命令告诉我我的架构没有变化,但我知道有。问题是我的 ormconfig 文件有问题。

我在 package.json 中定义了这些脚本,并注意到与您的命令相比,我明确提供了 ormconfig 文件的路径。也许你可以试试这个:

"typeorm:cli": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -f dist/src/database/config/ormconfig.js"
"migration:show": "npm run typeorm:cli -- migration:show",
"schema:log": "npm run build && npm run typeorm:cli -- schema:log",

【讨论】:

实际上,我用-f src/database/config/typeorm.config.ts 运行typeorm 并检测到文件,但它给了我一个错误:Error during migration show: MissingDriverError: Wrong driver: "undefined" given.;当我在 dist 文件夹中运行 JS 文件时,它也说了同样的话。 另外,我指定了配置文件,但带有选项--config。无论如何,这两种方式都不起作用。 您是否收到此错误,涉及数据库驱动程序? github.com/typeorm/typeorm/issues/4068 你可以从那里尝试一些建议。如果它没有帮助,您是否在某个地方公开了您的回购协议?或者您可以更新您的问题并显示您的 ormconfig 文件以及您导入 TypeOrmModule 并为模块提供 ormconfig 的部分。 我再次查看了您的评论。当您使用“-f src/database/config/typeorm.config.ts”运行命令时,您从源目录提供了 TypeScript 文件。配置通常包含实体和迁移文件的相对路径。然后 TypeOrm CLI 将解释这些相对于 TypeScript 文件的路径。但相反,TypeOrm 必须处理生成的 javascript,即您的构建输出。因此,使用 '-f yourBuildOutputDir/../typeorm.config.js' 启动 cli 不客气,我能感受到你的痛苦,因为我在这方面也为我的项目浪费了一些时间 :) 也许就是这样:依赖关系树由于一些更新而损坏。我之前读过,例如,与从头开始的全新安装相比,用于删除或修剪依赖项的 npm 命令可能会导致不同的结果,因为它们无法删除您要删除的依赖项引入的所有不需要的传递依赖项。

以上是关于TypeORM 命令不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章

TypeORM:通过一次调用数据库返回更新的对象? (异步/等待)

TypeORM/NestJS 中的分页

TypeORM 是不是支持输入和输出的原始 SQL 查询?

如何使用返回多个项目的 TypeORM 设置 Nestjs 查询?

SpyOn TypeORM 存储库更改单元测试 NestJS 的返回值

如何只返回 typeorm 关系的一个属性?