【Node.js】コマンドラインから対話式で入力を受け取る方法

に公開

目的

Node.jsでコマンドラインから入力を受け取る方法を知ること

状況

  • クライアントサーバモデルの簡易版CLIメッセージアプリの作成
  • クライアント側はNode.jsで実装
  • process.argv.slice()以外に簡単に記述できる方法がないかを探していた

課題に感じていたこと

process.argv.slice() では対話式にならないこと

CLIに、node client.js reverse abcde のように、関数名と引数を渡して、サーバにデータを送信するのではなく、
「関数名は?」→「引数は?」という流れで実装したいができていなかった

// 引数のみ取得
const argv = process.argv.slice(2);

// CLIに入力されたメソッド名
const method = argv[0];

// 選択した関数に対応するオブジェクトを取得
const selectedMethod = method_table[method];

解決策

Node.js「学び」にある『Accept input from the command line in Node.js』で実装できる
サンプルコードあり

参考URL

https://nodejs.org/ja/learn/command-line/accept-input-from-the-command-line-in-nodejs

Discussion