更新后无法启动嵌套项目/停止在 Typeorm 依赖项初始化

Posted

技术标签:

【中文标题】更新后无法启动嵌套项目/停止在 Typeorm 依赖项初始化【英文标题】:Can't start nest project after update / Stop at Typeorm dependencies initialization 【发布时间】:2019-10-29 20:34:43 【问题描述】:

一个月后我又回到了一个小项目。我更新了 nestjs 和 npm,但应用程序没有启动。我恢复了它,它运作良好。项目初始化时(npm run start),停在:“[Nest] 13012 - 2019-06-15 16:01 [InstanceLoader] TypeOrmModule dependencies initialized +1ms”,不再赘述。

这是我的回购链接:https://github.com/Ithrandil/coffeeshareBE 我真的不知道该尝试什么,也没有在 Nestjs repo 上找到任何特定的错误报告。

我在 NestJs 上从 6.0.0 升级到了 6.3.1 版本。

这里是不同的更新:

@types/express@4.17.0 prettier@1.18.2 nodemon@1.19.1 @types/node@10.14.9 typeorm@0.2.18 swagger-ui-express@4.0.6 @nestjs/platform-express@6.3.1 rxjs@6.5.2 @nestjs/core@6.3.1 @nestjs/typeorm@6.1.2 @nestjs/testing@6.3.1 typescript@3.5.2 @nestjs/common@6.3.1 class-transformer@0.2.3

【问题讨论】:

【参考方案1】:

看起来问题在于您注入自定义存储库 UserRepository 的方式。

首先,在您的用户存储库中,删除构造函数,并将类声明更改为如下所示:

@EntityRepository(User)
export class UserRepository extends Repository<User> 

然后,在您的用户模块中,将您的模块更改为如下所示:

@Module(
  imports: [TypeOrmModule.forFeature([User, UserRepository])],
  controllers: [UserController],
  providers: [UserService],
  exports: [],
)
export class UserModule 

然后,在您的用户服务中,更改您的构造函数以注入存储库,如下所示:

constructor(
  @InjectRepository(UserRepository)
  private readonly userRepo: UserRepository,
) 

有关更多信息,这是我发现的一个相关问题: https://github.com/nestjs/typeorm/issues/44

【讨论】:

它工作正常,感谢您的帮助。我尝试按照我的首席技术人员在工作中对我们的新项目所做的步骤进行操作,但是,因为我是开发世界的新手,所以我想我错过了几个步骤......【参考方案2】:

您的 package.json 中没有声明 TypeOrm 依赖项,您是否将此 ORM 与 Nest 一起使用?如果是这样,您需要通过 yarn 或 npm 指定它,它将作为依赖项添加到您的 package.json 文件中。

例如,在你的 deps 中添加 TypeOrm 的依赖:

"typeorm": "^0.2.18"

看看它是解决了所有问题还是只是带来了另一个问题。

【讨论】:

我在依赖项中导入了 typeorm,是的,我正在使用这个 orm 和嵌套。

以上是关于更新后无法启动嵌套项目/停止在 Typeorm 依赖项初始化的主要内容,如果未能解决你的问题,请参考以下文章

VS code 进行 flutter 调试时启动后就停止,无法调试的问题

TypeORM:保存时无法读取未定义的属性“inverseJoinColumns”

TypeORM/MySQL:无法删除或更新父行:外键约束失败

TypeORM 在批量保存时抛出重复错误,而不是忽略或更新现有值

Xcode突然停止在硬件上运行项目:“无法启动xxx.app:..没有这样的文件..” [关闭]

如何使用 typeorm 在嵌套 js 中存储大整数