未知方法 process.openStdin()

Unknown method process.openStdin()

我正在尝试将 grep 结果通过管道传输到 nodejs 脚本中。我发现,我应该从 process.stdin.

接收数据

我还发现了几种使用标准输入的方法。但它们是不同的,我找不到所有关于它的信息。我知道四种方式(前 3 种以 var data = "" 开头):

1) 在搜索结果中最受欢迎

process.stdin.resume();
process.stdin.setEncoding( 'utf8' );
process.stdin.on('data', function(chunk) { data += chunk; });
process.stdin.on('end', function() { console.log('data: ' + data); });

2) 看起来像第一个,但功能未知process.openStdin()

var stdin = process.openStdin();
stdin.on('data', function(chunk) { data += chunk; });
stdin.on('end', function() { console.log('data: ' + data); });

3) 在文档中我读到调用 stdin.resume() 将标准输入更改为 'old type'。所以如果我们没有调用 'resume' - 我们可以使用 'readable' 事件

process.stdin.setEncoding('utf8');
process.stdin.on('readable', function() { data += process.stdin.read(); });
process.stdin.on('end', function() { console.log('data: ' + data); });

4) 使用模块 readline。只要 grep 结果在多行中并且我不需要自己拆分接收到的数据,它就非常有用。但是很长一段时间我都无法理解为什么所有信息都直接通过管道传输到标准输出。然后我发现我们可以在创建接口时传递空对象而不是 process.stdout,并且数据不会通过管道传输到输出。

var readline = require('readline'),
//rl = readline.createInterface(process.stdin, process.stdout);
rl = readline.createInterface(process.stdin, {});
rl.on('line', function(data) { console.log('line: ' + data); });

5) 我自己的变体。使用另一个模块 'split' - 它允许从流中读取数据并将数据按指定符号(默认为 \r?\n)分配到 chuks 中。我用它来处理套接字,只要 stdin 也是可读流 - 我们就可以在这里使用它。

var split = require('split');
process.stdin.setEncoding('utf8');
process.stdin.pipe(split()).on('data', function(data) { console.log('line: ' + data); });

我的问题是"What is process.openStdin();????"

我搜索了 google 中的每一页,但没有找到关于此功能的任何文档!

此外,在搜索时我发现,nodejs 的官方文档很丑陋 - 没有提及因为哪些版本方法可用,许多 objects/methods 没有详细描述,没有用户评论。这种方法 (openStdin) - 存在并且有效,但没有任何描述!什么鬼???

在写问题时我找到了答案:)

在nodejs的source code中:

process.openStdin = function() {
  process.stdin.resume();
  return process.stdin;
};

但是我想知道,为什么文档中没有描述呢?如果它是一个仅供私人使用的函数,为什么它被许多人使用,谁写过使用标准输入?