如何在process.stdin的可读事件中添加条件?

时间:2016-12-10 14:40:38

标签: javascript node.js stdin

好吧,我正在尝试将一个简单的if statement传递给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值设置为一个数字,例如chunk == 10

2 个答案:

答案 0 :(得分:2)

@Siam这里的问题是chunk属于Buffer类型,而不是string。您可以使用chunk.toString()将其设为字符串,然后将其与"foo\n"进行比较,它会起作用

所以你的代码看起来像这样:

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

编辑1:

确保使用与输入相同的比较字符串。例如,在上述情况下,新行字符在基于Windows的系统上可以是CRLF\r\n,而在基于Unix的系统上则是LF\n。因此,尝试使用"foo\r\n"进行比较,如果是在Windows上

答案 1 :(得分:1)

您可以使用.prompt()(example)方法