如何将process.stdin中的输入与NodeJS中的字符串进行比较?

时间:2015-05-10 20:58:32

标签: node.js stdin

我正在使用nodeJS,我希望能够通过stdin传递命令。要做到这一点,我正在使用process.stdin。理想情况下,我有一个巨大的开关,有各种命令字符串,如“加载”或“停止”,但我不能让比较工作。我已经尝试过切换换行符,转换为字符串等等。虽然它看起来应该相当简单,但是无法解决这个问题。

以下是我一直试图开始工作的代码:

process.stdin.setEncoding('utf8');

process.stdin.on('readable', function() {
  var chunk = process.stdin.read();

  if(chunk === null)
    return;

  //i've tried this as well, to no avail
  //chunk = chunk.toString();

  if(chunk == "expectedinput")
    console.log("got it!");

  process.stdout.write('data: ' + chunk);

});

1 个答案:

答案 0 :(得分:2)

通常,如果要从stdin读取换行符分隔的输入,最简单的方法是使用内置的readline模块。

但是对于原始代码,问题很可能是输入的分块和/或新行也被捕获,因此您最终必须将其剥离或将条件更改为{ {1}}(假设您已经缓冲了足够的输入数据以查看换行符)。