nestjs 和 typeorm - 未能设置依赖注入
nestjs and typeorm - failing to setup the dependency injection
我正在尝试使用 nestjs
和 typeorm
来编写一个基本的 CRUD 应用程序,但我无法使依赖注入正常工作。我正在尝试将代码设置数据库放入单独的模块中并导入它。
这是我收到的错误:
[ExceptionHandler] Nest can't resolve dependencies of the
QuestionController (?). Please make sure that the argument at index
[0] is available in the current context. +14ms 4:
v8::internal::MaybeHandle
v8::internal::(anonymous
namespace)::HandleApiCallHelper(v8::internal::Isolate*,
v8::internal::Handle,
v8::internal::Handle,
v8::internal::Handle,
v8::internal::Handle,
v8::internal::BuiltinArguments) [/usr/local/bin/node]
这是基本的代码结构:
database.module.ts
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'sqlite',
database: 'database.sqlite',
}),
],
})
export class DatabaseModule {
}
question.module.ts
:
@Module({
imports: [
DatabaseModule,
TypeOrmModule.forFeature([Question]),
],
providers: [QuestionDal, QuestionLogic],
})
export class QuestionModule {
}
app.module.ts
@Module({
imports: [QuestionModule],
controllers: [QuestionController],
providers: [],
})
export class AppModule {
}
question.dal.ts
@Injectable()
export class QuestionDal {
constructor(@InjectRepository(Question) private questionRepo: Repository<Question>) { }
}
question.logic.ts
@Injectable()
export class QuestionLogic {
constructor(private questionDal: QuestionDal) { }
}
question.controller.ts
@Controller()
export class QuestionController {
constructor(private readonly appService: QuestionLogic) { }
}
感谢任何帮助或提示
您必须导出 QuestionModule
中的 QuestionLogic
提供程序。
您可以将它注入到导入 QuestionModule
的其他模块中。
@Module({
imports: [
DatabaseModule,
TypeOrmModule.forFeature([Question]),
],
providers: [QuestionDal, QuestionLogic],
exports: [QuestionLogic]
})
export class QuestionModule {
}
我正在尝试使用 nestjs
和 typeorm
来编写一个基本的 CRUD 应用程序,但我无法使依赖注入正常工作。我正在尝试将代码设置数据库放入单独的模块中并导入它。
这是我收到的错误:
[ExceptionHandler] Nest can't resolve dependencies of the QuestionController (?). Please make sure that the argument at index [0] is available in the current context. +14ms 4: v8::internal::MaybeHandle v8::internal::(anonymous namespace)::HandleApiCallHelper(v8::internal::Isolate*, v8::internal::Handle, v8::internal::Handle, v8::internal::Handle, v8::internal::Handle, v8::internal::BuiltinArguments) [/usr/local/bin/node]
这是基本的代码结构:
database.module.ts
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'sqlite',
database: 'database.sqlite',
}),
],
})
export class DatabaseModule {
}
question.module.ts
:
@Module({
imports: [
DatabaseModule,
TypeOrmModule.forFeature([Question]),
],
providers: [QuestionDal, QuestionLogic],
})
export class QuestionModule {
}
app.module.ts
@Module({
imports: [QuestionModule],
controllers: [QuestionController],
providers: [],
})
export class AppModule {
}
question.dal.ts
@Injectable()
export class QuestionDal {
constructor(@InjectRepository(Question) private questionRepo: Repository<Question>) { }
}
question.logic.ts
@Injectable()
export class QuestionLogic {
constructor(private questionDal: QuestionDal) { }
}
question.controller.ts
@Controller()
export class QuestionController {
constructor(private readonly appService: QuestionLogic) { }
}
感谢任何帮助或提示
您必须导出 QuestionModule
中的 QuestionLogic
提供程序。
您可以将它注入到导入 QuestionModule
的其他模块中。
@Module({
imports: [
DatabaseModule,
TypeOrmModule.forFeature([Question]),
],
providers: [QuestionDal, QuestionLogic],
exports: [QuestionLogic]
})
export class QuestionModule {
}