在 process.stdin 的可读流中插入条件语句

insert conditional statements in readable streams of process.stdin

好吧,我正在尝试将一个简单的 if 语句传递给 NodeJS 中的 process.stdin 可读流。但这似乎不起作用。这是代码:

process.stdin.on('readable', function() {
  var chunk = process.stdin.read();
  if (chunk !== null && chunk == 'foo') {
    process.stdout.write('true\n');
} else if (chunk !== null) {
    process.stdout.write('false\n');
}

有谁知道,我在这里做错了什么?我也试过 chunk == 'foo\n' 但是,没有运气。它唯一有效的时间是当我将块值设置为数字时,例如 chunk == 10.

这里的问题是chunk是Buffer类型的,不是字符串。您可以使用 chunk.toString() 使其成为一个字符串,然后将其与 foo\n(如果在 linux 上)或 foo\r\n(如果在 windows 上)进行比较它会起作用

因此您的代码将如下所示:

process.stdin.on('readable', function() {
  var chunk = process.stdin.read();
  if (chunk !== null && chunk.toString() == 'foo\n' || 'foo\r\n') {
    process.stdout.write('true\n');
  } else if (chunk !== null) {
    process.stdout.write('false\n');
  }
});