我正在尝试使用nestjs
和typeorm
来编写基本的CRUD应用程序,但是我无法使依赖项注入正常工作。我正在尝试将代码设置数据库放入单独的模块中并导入。
这是我得到的错误:
[ExceptionHandler] Nest无法解析依赖项 QuestionController(?)。请确保索引处的参数 [0]在当前上下文中可用。 + 14ms 4: v8 :: internal :: MaybeHandle v8 :: internal ::((匿名 名称空间):: 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) { }
}
感谢您的帮助或提示
答案 0 :(得分:4)
您必须在QuestionLogic
内导出QuestionModule
提供程序。
您将可以将其注入导入QuestionModule
的其他模块中。
@Module({
imports: [
DatabaseModule,
TypeOrmModule.forFeature([Question]),
],
providers: [QuestionDal, QuestionLogic],
exports: [QuestionLogic]
})
export class QuestionModule {
}