有没有办法暂停一个运行脚本与process.stdin用于Node.js中的用户输入?

时间:2017-02-01 20:10:31

标签: javascript node.js prompt readline

我希望看看Node.js是否能够在遇到process.stdin块时暂停脚本以获取命令行应用程序的用户输入,类似于 prompt()在浏览器中使用JS或获取如何在Ruby中工作。

  var response = '';

  console.log("What's your favorite color?");

  process.stdin.resume();
  process.stdin.setEncoding('utf8');

  process.stdin.on('data', function (text) {
    response = text;
    process.exit();
  });

  console.log(`Cool! So ${response} is your favorite color? Mine is black.`);

在上面的简单脚本中,我希望看到

What's your favorite color?
*pause for user input ===>* Red
Cool! So Red is your favorite color? Mine is black.

暂停脚本,直到我输入内容并按Enter键继续运行。相反,我看到了

What's your favorite color?
Cool! So  is your favorite color? Mine is black.

立即打印出来然后接受我的用户输入。

我知道还有其他模块,如 readline 提示,可以简化节点的用户输入。对于这个问题,我特别想看看Node.js是否提供此功能而无需安装额外的软件包(process.stdin是首先想到的),尽管知道是否有任何模块会有所帮助也提供这种功能。

2 个答案:

答案 0 :(得分:0)

在继续编写脚本之前等待stdin

  var response = '';

  console.log("What's your favorite color?");

  process.stdin.resume();
  process.stdin.setEncoding('utf8');

  process.stdin.on('data', function (text) {
    response = text;
    console.log(`Cool! So ${response} is your favorite color? Mine is black.`);
    process.exit();
  });

答案 1 :(得分:0)

您可以使用readline-sync。

var rl = require('readline-sync');
var response = '';

response = rl.question("What's your favorite color?");

console.log(`Cool! So ${response} is your favorite color? Mine is black.`);