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 (将#修改为@)