首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在#0位置注入优先级,因为TypeInfo不知道

无法在#0位置注入优先级,因为TypeInfo不知道
EN

Stack Overflow用户
提问于 2021-06-24 14:20:09
回答 1查看 1.6K关注 0票数 3

我有个麻烦:

代码语言:javascript
运行
复制
[ERROR] 14:07:18 Error: Cannot inject the dependency at position #0 of "ListInterviewPagesUseCase" constructor. Reason: TypeInfo not known for "InterviewPagesRepository"

容器

代码语言:javascript
运行
复制
import { container } from "tsyringe";

import { InterviewPagesRepository } from "../../modules/interview/repositories/implementations/InterviewPagesRepository";

import "./providers";

container.registerSingleton(
  "InterviewPagesRepository",
  InterviewPagesRepository
);

控制器

代码语言:javascript
运行
复制
import { Request, Response } from "express";
import { container } from "tsyringe";

import { ListInterviewPagesUseCase } from "./ListInterviewPagesUseCase";

class ListInterviewPagesController {
  async handle(request: Request, response: Response): Promise<Response> {
    const listInterviewPagesUseCase = container.resolve(
      ListInterviewPagesUseCase
    );

    const interviewPages = await listInterviewPagesUseCase.execute();

    return response.json(interviewPages);
  }
}

export { ListInterviewPagesController };

UseCase

代码语言:javascript
运行
复制
import { inject, injectable } from "tsyringe";

import { InterviewPage } from "../../entities/InterviewPage";
import { IInterviewPagesRepository } from "../../repositories/IInterviewPagesRepository";

@injectable()
class ListInterviewPagesUseCase {
  constructor(
    @inject("InterviewPagesRepository")
    private interviewPagesRepository: IInterviewPagesRepository
  ) {}

  async execute(): Promise<InterviewPage[]> {
    const interviewPages = await this.interviewPagesRepository.all();

    return interviewPages;
  }
}

export { ListInterviewPagesUseCase };

它在windows上正常工作,但现在我换了mac,停止了工作。我已经把delay写在tsrynge上了,但仍然不起作用。

这发生在我调用一个使用这个存储库的路由时,但是看起来还好,数据库已经创建了。

我在app文件中的导入:

代码语言:javascript
运行
复制
import "reflect-metadata";
import "dotenv/config";
import "./database";
import "./shared/container";

import cors from "cors";
import express from "express";
import swaggerUi from "swagger-ui-express";

import { router } from "./routes";
import swaggerFile from "./swagger.json";
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-03 22:17:07

考虑用@singleton装饰InterviewPagesRepository,而不是自己调用container.registerSingleton

代码语言:javascript
运行
复制
import { singleton } from "tsyringe";

@singleton()
class InterviewPagesRepository {

与您一样,@singleton装饰器内部也将其存储在其他构造函数的参数中(参见12,然后是3.4.5)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68117566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档