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

How to compare input from process.stdin to string in NodeJS?

我正在使用 nodeJS,我希望能够通过标准输入向它传递命令。为此,我使用 process.stdin。理想情况下,我有一个巨大的开关,带有各种命令字符串,如 "load" 或 "stop",但我无法进行比较。我试过切出换行符、转换为字符串等。无法弄清楚,尽管它看起来应该相当简单。

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

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);

});

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

但是对于您的原始代码,问题很可能是输入的分块 and/or 换行符也被捕获,因此您最终必须将其删除或更改您的条件到 if(chunk == "expectedinput\n") 之类的东西(假设您已经缓冲了足够的输入数据以查看换行符)。