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

时间:2017-02-01 17:45:45

标签: javascript node.js 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

1 个答案:

答案 0 :(得分:0)

这里的问题是块是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');
  }
});