1. ホーム
  2. node.js

[解決済み] コンソールから対話的に値を読み取る

2022-04-23 15:19:48

質問

コンソールの拡張機能を使って、簡単なhttpサーバーを作ろうと思いました。コマンドラインからデータを読み込むためのスニペットを見つけました。

  var i = rl.createInterface(process.stdin, process.stdout, null);
  i.question('Write your name: ', function(answer) {
    console.log('Nice to meet you> ' + answer);
    i.close();
    process.stdin.destroy();

  });

繰り返し質問をするために、単純に while(done) { } をループさせるのですか?また、質問時にサーバーが出力を受けると、その行が台無しになるのですが。

解決方法は?

というのも、node.jsが好まない、入力に対するブロックが必要になるからです。

代わりに、何かが入力されるたびに呼び出されるコールバックをセットアップします。

var stdin = process.openStdin();

stdin.addListener("data", function(d) {
    // note:  d is an object, and when converted to a string it will
    // end with a linefeed.  so we (rather crudely) account for that  
    // with toString() and then trim() 
    console.log("you entered: [" + 
        d.toString().trim() + "]");
  });