inversify-binding-decorators失败,文件分开 warrior.ts: weapon.ts: main.ts:

问题描述

以下代码运行良好,直到我将其分离到其他文件中为止:

import {Container,inject} from "inversify";
import {buildproviderModule,provide} from "inversify-binding-decorators";
import "reflect-Metadata";

export interface Weapon {
    hit(): string
}

@provide("Weapon")
export class Katana implements Weapon {
    public hit() {
        return "cut!";
    }
}

@provide(Ninja)
export class Ninja {
    private weapon: Weapon;

    constructor(@inject("Weapon") weapon: Weapon) {
        this.weapon = weapon;
    }

    fight() {
        return this.weapon.hit()
    }
}


try {
    const container = new Container();
    container.load(buildproviderModule());
    const ninja = container.get(Ninja);

    console.log(ninja.fight())
    console.log("success")
} catch (e) {
    console.error(e)
}

console.log("done")

重构后,这是新的文件结构:

ioc/
    node_modules/
    src/
        warrior.ts
        weapon.ts
    main.ts
    package.json
    package-lock.json
    tsconfig.json

它们具有相同的逻辑,只是分开了:

warrior.ts:

import "reflect-Metadata";
import {provide} from "inversify-binding-decorators";
import {inject} from "inversify";
import {Weapon} from "./weapon";

@provide(Ninja)
export class Ninja {
    private weapon: Weapon;

    constructor(@inject("Weapon") weapon: Weapon) {
        this.weapon = weapon;
    }

    fight() {
        return this.weapon.hit()
    }
}

weapon.ts:

import {provide} from "inversify-binding-decorators";

export interface Weapon {
    hit(): string
}

@provide("Weapon")
export class Katana implements Weapon {
    public hit() {
        return "cut!";
    }
}

main.ts:

import {Container} from "inversify";
import {buildproviderModule} from "inversify-binding-decorators";
import "reflect-Metadata";
import {Ninja} from "./src/warrior";

try {
    const container = new Container();
    container.load(buildproviderModule());
    const ninja = container.get(Ninja);

    console.log(ninja.fight())
    console.log("success")
} catch (e) {
    console.error(e)
}

console.log("done")

但是现在它在const ninja = container.get(Ninja);上失败,错误Error: No matching bindings found for serviceIdentifier: Weapon

知道什么问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...