【问题标题】:How to compare input from process.stdin to string in NodeJS?如何将来自 process.stdin 的输入与 NodeJS 中的字符串进行比较?
【发布时间】:2015-05-10 20:58:32
【问题描述】:

我正在使用 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);

});

【问题讨论】:

  • 您实际上是在写信给stdin 还是“load”和“stop”实际上是命令行参数?如果您实际上是在写标准输入并且您想提供一种“提示”界面,您可以考虑使用内置的readline 模块来帮助解决这个问题。
  • 这将从标准输入读取以允许在程序启动后运行命令,因此 args 不适合。我会研究 readline,但我很好奇为什么我当前的解决方案不起作用。

标签: node.js stdin


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2021-07-12
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多