0

我正在使用 pelias 项目并使用包 wof-admin-lookup 来处理从文件中读取的数据。

有一种情况,没有有效的数据可以推送到流中。wof-admin-lookup 永远不会结束。

这是我的代码:

const stream = recordStream.create(filePath)
        .pipe(blacklistStream())
        .pipe(adminLookup.create())
        .pipe(model.createDocumentMapperStream())
        .pipe(peliasDbclient())

  stream
        .on('data', data => {
            count++
        })
        .on('finish', () => {
            console.log(`Imported ${count} addresses`)
            resolve()
        })
        .on('error', (e) => {
            reject(e)
        })

这是 wof-admin-lookup 中的代码:

module.exports = function(pipResolver, config) {
  if (!pipResolver) {
    throw new Error('valid pipResolver required to be passed in as the first parameter');
  }

  // pelias 'imports.adminLookup' config section
  config = config || {};

  const pipResolverStream = createPipResolverStream(pipResolver, config);
  const end = createPipResolverEnd(pipResolver);

  const stream = parallelTransform(config.maxConcurrentReqs || 1, pipResolverStream);
  stream.on('end', end);

  return stream;
};

尽管控制台记录了“导入的 0 地址”,但如果我不通过 Ctrl+C 手动关闭它,pipResolverStream 将永远存在。

更新,这种情况只有在没有数据通过流传递时才会发生。

4

1 回答 1

0

“如果没有像 < /dev/null 这样的东西来生成 EOF,则不会触发结束事件。否则程序会等待终端发送 ^D。”

node.js:如何检测空的标准输入流?

于 2021-09-16T04:29:55.547 回答