なんだかGoodVibes

日々の勉強メモです。

【Node】標準入力

標準入力の方法をメモです。
2つの方法を記載します。


process.argvを使う

console.log(process.argv);

以下のように引数を指定して実行すると

$node sample.js aaa bbb ccc

結果は以下のようになります。

node(実行ファイルのフルパス(node.exe))
sample.js(スクリプトファイルのフルパス(.js))
aaa
bbb
ccc


引数は、3つ目に格納されています。
つまり、引数だけを取得したい場合は以下のようにします。

console.log(process.argv.slice(2));

sliceについては過去の記事で記載しているので参考にしてください。

nandakagoodvibes.hatenablog.com


引数はいくつでも指定することができます。
区切りは半角スペースです。


readlineを使う

async function main() {
    var input = '';

    while(input != 'quit') {
        input = await readInput('何か入力してください。終了する場合は「quit」\n=> ');
        console.log(`入力したものは[ ` + input + ' ]');
    }
}

function readInput(text) {
    var readline = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
  });

  return new Promise((resolve, reject) => {
    readline.question(text, (answer) => {
      resolve(answer);
      readline.close();
    });
  });
}

main();

入力値が「quit」となるまで実行します。
今回使用したモジュールはreadline
基本的に非同期で動くので、同期で動くようにawait/asyncを使用しています。
どちらも覚えておいたら、使用用途に応じて少し変えるだけでいいと思うので
とても便利だと思います。