0

这是我的 noflo 组件,HelloWorld.js - 它只接收传入的字符串并将其发送出去。

const noflo = require('noflo');

exports.getComponent = () => {
  if (!input.hasData('in')) {
    return;
  }

  const c = new noflo.Component();

  c.inPorts.add('in', { datatype: 'string' });
  c.outPorts.add('out', { datatype: 'string' });

  c.process((input, output) => {
    const data = input.getData('in');
    output.sendDone({
      out: data,
    });
  });

  return c;
};

我从NoFlo 文档入门中构建了示例图,它工作得很好。但是现在尝试我自己的组件(见上文),当我尝试运行一个使用它的图表时,我的系统只是旋转,消耗了大约 4GB 的内存,然后吐出:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

我已经阅读了你找到的关于这个问题的建议(所有的 NODE_OPTIONS,内存限制的东西)。事实上,我在我的 Linux 系统上遇到了这个“堆”问题,然后这个建议就奏效了。但是现在我在我的 2 个 Windows 系统和我的 Linux 系统上都收到了上述错误(仅针对这个 noflo 项目)。

我是否在组件中编码错误?这是我的图表,HelloWorld.fbp:

Hello(HelloWorld) OUT -> IN Display(core/Output)

'say it' -> IN Hello

还有我的 npm 脚本:

"flo-hello": "noflo-nodejs --graph graphs/HelloWorld.fbp --batch --debug",
4

1 回答 1

0

input.hasData('in')部分需要在处理函数中,而不是在getComponent中

于 2021-01-31T15:08:23.527 回答