【发布时间】:2021-10-19 07:19:57
【问题描述】:
我正在使用 Nx monorepo 创建一个 Web 应用程序,该应用程序将有一个 NestJS 后端和一个 Angular 前端。我想使用 SQLite 作为数据库。 SQLite 数据库文件名为my_db.db,位于 repo/project 的根目录中。我的monorepo一般结构如下:
my-project
│ angular.json
│ decorate-angular-cli.js
│ my_db.db
│ nest-cli.json
│ nx.json
│ package-lock.json
│ package.json
│ tsconfig.base.json
│ yarn.lock
│
├───apps
│ └───api
│ │ .eslintrc.json
│ │ jest.config.js
│ │ tsconfig.app.json
│ │ tsconfig.json
│ │ tsconfig.spec.json
│ │
│ └───src
│ │ main.ts
│ │
│ ├───app
│ │ .gitkeep
│ │ app.module.ts
│ │
│ ├───assets
│ │ .gitkeep
│ │
│ └───environments
│ environment.prod.ts
│ environment.ts
│
├───dist
│ └───apps
│ └───api
│ │ main.js
│ │ main.js.map
│ │
│ └───assets
│ .gitkeep
│
└───libs
└───back-end-dashboard
│ tsconfig.lib.json
│
└───src
│ index.ts
│
└───lib
│ back-end-dashboard.module.ts
│
├───controllers
│ dashboard.controller.ts
│
├───entities
│ summary.entity.ts
│
└───services
dashboard.service.ts
这是我的app.module.ts:
import { Module } from '@nestjs/common';
import { BackendDashboardModule } from '@dashboard/back-end-dashboard';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'sqlite',
database: 'my_db.db',
entities: ['/**/*.entity{.ts,.js}'],
synchronize: false,
}),
BackendDashboardModule,
],
controllers: [],
providers: [],
})
export class AppModule {}
在my_db.db SQLite 数据库中,我创建了一个View,其中包含与summary.entity.ts 完全相同的列。
当我运行ng serve api 时,我收到以下错误:
[Nest] 11160 - 17/08/2021, 13:00:40 [NestFactory] 开始筑巢 申请... [巢] 11160 - 17/08/2021, 13:00:40
[InstanceLoader] AppModule 依赖初始化 +565ms [Nest] 11160 - 17/08/2021, 13:00:40 [InstanceLoader] TypeOrmModule 依赖项初始化 +7ms 未发现类型错误版本:打字稿 4.0.7 时间:17935ms [Nest] 11160 - 17/08/2021, 13:01:17 [TypeOrmModule] 无法连接到数据库。 正在重试 (1)... +36756ms 错误:EPERM:不允许操作,scandir 'C:/Documents and Settings' 在 Object.readdirSync (fs.js:1043:3) 在 GlobSync._readdir (C:\projects\my-project\node_modules\glob\sync.js:286:41) 在 GlobSync._readdirInGlobStar (C:\projects\my-project\node_modules\glob\sync.js:265:20) 在 GlobSync._readdir (C:\projects\my-project\node_modules\glob\sync.js:274:17) 在 GlobSync._processReaddir (C:\projects\my-project\node_modules\glob\sync.js:135:22) 在 GlobSync._process (C:\projects\my-project\node_modules\glob\sync.js:130:10) 在 GlobSync._processGlobStar (C:\projects\my-project\node_modules\glob\sync.js:378:10) 在 GlobSync._process (C:\projects\my-project\node_modules\glob\sync.js:128:10) 在新的 GlobSync (C:\projects\my-project\node_modules\glob\sync.js:46:10) 在 Function.globSync [同步] (C:\projects\my-project\node_modules\glob\sync.js:24:10)
当我像下面这样更改我的app.module.ts 时:
import { Module } from '@nestjs/common';
import { BackendDashboardModule } from '@dashboard/back-end-dashboard';
import { TypeOrmModule } from '@nestjs/typeorm';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'sqlite',
database: 'my_db.db',
entities: ['dist/**/*.entity{.ts,.js}'],
synchronize: false,
}),
BackendDashboardModule,
],
controllers: [],
providers: [],
})
export class AppModule {}
然后我得到以下错误:
[Nest] 5276 - 17/08/2021, 13:04:42 [NestFactory] 开始筑巢 应用程序... [Nest] 5276 - 2021 年 8 月 17 日,13:04:43 [InstanceLoader] AppModule 依赖项初始化 +352ms [Nest] 5276 - 17/08/2021, 13:04:43 [InstanceLoader] TypeOrmModule 依赖项已初始化 +2ms [Nest] 5276 - 17/08/2021, 13:04:43 [InstanceLoader] TypeOrmCoreModule 依赖项已初始化 +55ms [Nest] 5276 - 17/08/2021, 13:04:43 [ExceptionHandler] “摘要”没有存储库 被找到。看起来此实体未在当前注册 “默认”连接? +167ms RepositoryNotFoundError: No repository 找到了“摘要”。看起来这个实体没有注册 当前的“默认”连接? 在 RepositoryNotFoundError.TypeORMError [作为构造函数] (C:\projects\my-project\src\error\TypeORMError.ts:7:9) 在新的 RepositoryNotFoundError (C:\projects\my-project\src\error\RepositoryNotFoundError.ts:10:9) 在 EntityManager.getRepository (C:\projects\my-project\src\entity-manager\EntityManager.ts:931:19) 在 Connection.getRepository (C:\projects\my-project\src\connection\Connection.ts:339:29) 在 InstanceWrapper.useFactory [作为元类型] (C:\projects\my-project\node_modules@nestjs\typeorm\dist\typeorm.providers.js:16:30) 在 Injector.instantiateClass (C:\projects\my-project\node_modules@nestjs\core\injector\injector.js:289:55) 在回调(C:\projects\my-project\node_modules@nestjs\core\injector\injector.js:42:41) 在 Injector.resolveConstructorParams (C:\projects\my-project\node_modules@nestjs\core\injector\injector.js:114:24) 在 Injector.loadInstance (C:\projects\my-project\node_modules@nestjs\core\injector\injector.js:46:9) 在 Injector.loadProvider (C:\projects\my-project\node_modules@nestjs\core\injector\injector.js:68:9)
【问题讨论】:
-
尝试手动添加实体。实体:[摘要]
-
@Yilmaz,你的意思是没有办法自动添加实体(在很多实体的情况下)?
-
成功了吗?
标签: javascript sqlite nestjs typeorm monorepo