首页 > 解决方案 > typeorm getConnection() 找不到“默认”连接

问题描述

我有一个 NX mono repo 项目,我想在其中使用 typeorm。配置文件ormconfig.json位于工作区根目录(相同的 package.json 文件夹),内容如下:

{
    "name": "default",
    "type": "sqlite",
    "database": "data/db.sql",
    "logging": true,
    "entities": ["libs/database/src/entities/*.entity.{ts,js}"],
    "migrations": ["libs/database/src/migrations/*.{ts,js}"],
    "cli": {
        "entitiesDir": "libs/database/src/entities",
        "migrationsDir": "libs/database/src/migrations",
        "subscribersDir": "libs/database/src/subscribers"
    }
}

如您所见,实体位于数据库库中。

此配置适用于迁移,但是当我尝试调用getConnection()(从任何地方,例如同一工作区中的节点应用程序)时,我收到错误ConnectionNotFoundError: Connection "default" was not found.

标签: connectiontypeormnrwl-nx

解决方案


我也一直在为我的项目使用单声道存储库。根据我的经验,在几个月前也搜索过相同的问题后,我发现您应该将ormconfig.json文件放在项目的顶级目录中。例如,如果您的目录如下所示:

project/
    packages/
        backend/
        common/
        frontend/
  • 并且您的ormconfig.json文件位于project/packages/backend/目录中,那么您应该将其移动到顶部或父目录,即project/.

  • 还要确保您的实体迁移在目录路径/树中显示实体文件夹的正确位置。正如我所见,您首先构建和编译您的代码,然后使用node. 因此,如果是这种情况,并且您不使用类似的工具ts-node,那么将 Entities 或 Migrations 目录指向lib/ dist/build文件夹是正确的。

  • 我发现使用Ben Awad 的这个实用功能也很有帮助,将 TypeORM 与我的数据库连接起来。我希望它也能帮助你!


推荐阅读