1

エラーが発生しています:

Component [name] not available with base [path]

コンポーネントをネットワークの ComponentLoader インスタンスに動的にアタッチしようとするとき。

var components = []; // This is populated with noflo.Component instances at runtime.
var graph = {
    properties: { name: 'Test components' },
    processes: {
        log: { component: 'log' },
        split: { component: 'split' }
    },
    connections: [
        {
            data: 'John Doe',
            tgt: { process: 'split', port: 'in' }
        },
        {
            src: { process: 'split', port: 'left' },
            tgt: { process: 'log', port: 'in' }
        },
        {
            src: { process: 'split', port: 'right' },
            tgt: { process: 'log', port: 'in' }
        }
    ]
};

noflo.graph.loadJSON(graph, function(g) {

    noflo.createNetwork(g, function(n) {

        var getComponent = function(c) {
            return c;
        }

        for (var i = 0; i < components.length; i++) {

            var c = components[i];
            n.loader.components[c.key] = {};
            n.loader.components[c.key].getComponent = getComponent.bind(null, c);

        };

    });
});

また、コンポーネントをローダーのコンポーネント コレクションのプロパティに直接割り当てようとしました。

n.loader.components[c.key] = c;
4

1 に答える 1

1

これには NoFlo ComponentLoader のregisterComponentメソッドを利用できます。秘訣は、NoFlo Network を3 番目のパラメーターとして渡すことにより、遅延モードで開始することです。trueこれにより、すぐに実行が開始されず、最初にコンポーネントを登録できます。

// Create NoFlo network in delayed mode (see the third param in the end)
noflo.createNetwork(g, function(n) {

  // Register the custom components
  components.forEach (function (component) {
    n.loader.registerComponent('myproject', component.key, {
      getComponent: function () { return component; }
    });
  });

  // Once the components have been registered we can wire up and start it
  n.connect(function () {
    n.start();
  });

}, true);

もう 1 つのオプションは、プロジェクトにカスタム ComponentLoader を登録することです。そうすれば、ネットワークを開始するときに特別なことをする必要はありません。

たとえば、これがブラウザーの noflo-polymer ( manifestcustom loader ) または Node.js の MicroFlo ( manifestcustom loader ) でどのように行われるかを参照してください。

カスタム コンポーネント ローダーはNoFlo 0.5.1 からサポートされています。

于 2014-06-17T16:55:22.540 に答える