2

我遇到了一个似乎很难放入标题的问题,这就是为什么您获得了这个标题的野兽。

我收到一条错误消息:Error: Missing required @inject or @multiInject annotation in: argument 0 in class SceneRepository..
这看起来很简单,我应该@inject在我的第一个参数中添加一个注释。这是我的构造函数:

export class SceneRepository extends BaseRepository<IScene> {
  constructor(@inject(SceneSchema) private sceneSchema: SceneSchema) {
    super(sceneSchema.schema);
  }
}

为了完整起见,这就是我的 BaseRepository 的样子:

export class BaseRepository<T extends Document> implements IWrite<T>, IRead<T>{
  constructor(private _model: Model<Document>) {

  }
  ...
}

Model<Document>来自第三方库(猫鼬)。

我不知道我在这里做错了什么,所以如果你能把我推向正确的方向,我将不胜感激。

4

1 回答 1

0

我遇到了类似的问题,在我的情况下,我使用属性注入而不是构造函数注入来摆脱这个错误并且也让注入工作。

export class SceneRepository extends BaseRepository<IScene> {
    @inject(SceneSchema)
    private sceneSchema: SceneSchema;
    constructor() {
        super(this.sceneSchema.schema);
      }
    }

希望这可以帮助。

于 2020-06-09T11:37:14.720 回答