【问题标题】:Nestjs throws a TS2322 err using the examplesNestjs 使用示例抛出 TS2322 错误
【发布时间】:2018-11-15 08:02:02
【问题描述】:

我是嵌套新手,遇到了一个对我来说无法真正解码的错误。我试图关注nest example,但没有运气。

 [tsl] ERROR in /Users/user/Documents/development/sprinta/src/server/app.module.ts(12,5)
[0]       TS2322: Type '(DynamicModule | typeof ProjectModule)[]' is not assignable to type 'Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference<any>'.
[0]   Type '(DynamicModule | typeof ProjectModule)[]' is not assignable to type 'ForwardReference<any>'.
[0]     Property 'forwardRef' is missing in type '(DynamicModule | typeof ProjectModule)[]'.

app.module.ts

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AngularUniversalModule } from './modules/angular-universal/angular-universal.module';
import { JiraService } from './services/jira.service'
// modules
import { ProjectModule } from './resources/local/projects/project.module'
// sync
import {ProjectsSync} from './sync/projects.sync'

@Module({
  imports: [
    [TypeOrmModule.forRoot(), ProjectModule],
    AngularUniversalModule.forRoot(),
  ],
  controllers: [],
  providers:[JiraService, ProjectsSync],
})
export class ApplicationModule {}

project.module.ts

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ProjectService } from './project.service';
import { ProjectController } from './project.controller';
import { Project } from './project.entity';

@Module({
  imports: [TypeOrmModule.forFeature([Project])],
  providers: [ProjectService],
  controllers: [ProjectController],
})
export class ProjectModule {}

project.service.ts

import { Injectable, Inject } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Project } from './project.entity';

@Injectable()
export class ProjectService {
  constructor(
    @InjectRepository(Project)
    private readonly projectRepository: Repository<Project>,
  ) {}

  async findAll(): Promise<Project[]> {
    return await this.projectRepository.find();
  }
}

project.entity.ts

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class Project {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ length: 500 })
  name: string;
}

project.controller.ts

import { Controller, Get } from '@nestjs/common';
import { ProjectService } from './project.service';
import { Project } from './project.entity';

@Controller('project')
export class ProjectController {
  constructor(private readonly projectService: ProjectService) {}

  @Get()
  findAll(): Promise<Project[]> {
    return this.projectService.findAll();
  }
}

感谢您的帮助

【问题讨论】:

  • 这个问题你解决了吗?

标签: node.js typescript nestjs


【解决方案1】:

TypeOrmModule.forRoot()ProjectModule 周围有一个额外的嵌套数组。 @Module 调用应为:

@Module({
  imports: [
    TypeOrmModule.forRoot(), ProjectModule,
    AngularUniversalModule.forRoot(),
  ],
  controllers: [],
  providers:[JiraService, ProjectsSync],
})

【讨论】:

  • 我试过了,但出现了以下错误:[Nest] 1593 - 11/18/2018, 9:03:11 PM [ExceptionHandler] 找不到“项目”的存储库。看起来像这样
  • 不,forRoot 只能在 AppModule 中使用。 imports: [TypeOrmModule.forFeature([Project])] 的语法对于附加模块是完全正确的
猜你喜欢
  • 2020-03-12
  • 2019-02-28
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多