Node.js REPLの使用方法

node コマンドは、Node.jsスクリプトを実行するために使用するコマンドです。

実行するスクリプトや引数を指定せずにnodeコマンドを実行すると、REPLセッションが開始されます。

**注:** REPL は Read Evaluate Print Loop の略で、ユーザー入力として単一の式を受け取り、実行後に結果をコンソールに返すプログラミング言語環境(基本的にコンソールウィンドウ)です。REPLセッションは、簡単なJavaScriptコードをすばやくテストするのに便利な方法を提供します。

ターミナルで今すぐ試してみると、次のようになります。

コマンドはアイドルモードのままになり、何か入力されるのを待ちます。

**ヒント:** ターミナルを開く方法がわからない場合は、「your-operating-systemでターミナルを開く方法」をGoogleで検索してください。

REPLは、より正確には、JavaScriptコードを入力するのを待っています。

シンプルに始めて、次を入力します。

> console.log('test')
test
undefined
>

最初の値であるtestは、コンソールに出力するように指示した出力であり、次にundefinedが表示されます。これは、console.log()を実行したときの戻り値です。Nodeはこのコード行を読み取り、評価し、結果を出力してから、さらにコード行を待つ状態に戻りました。セッションを終了するまで、REPLで実行するすべてのコードに対して、Nodeはこれら3つの手順をループします。それがREPLの名前の由来です。

Nodeは、指示することなく、JavaScriptコードの行の結果を自動的に出力します。たとえば、次の行を入力してEnterキーを押します。

> 5 === '5'
false
>

上記の2行の出力の違いに注意してください。Node REPLはconsole.log()を実行した後にundefinedを出力しましたが、一方、5 === '5'の結果だけを出力しました。前者はJavaScriptの単なるステートメントであり、後者は式であることに注意する必要があります。

場合によっては、テストするコードに複数行が必要になることがあります。たとえば、乱数を生成する関数を定義する場合、REPLセッションで次の行を入力してEnterキーを押します。

function generateRandom() {
...

Node REPLは、コードの入力がまだ完了していないことを十分に理解しており、さらにコードを入力するための複数行モードになります.それでは、関数の定義を完了してEnterキーを押してください。

function generateRandom() {
...return Math.random()
}
undefined

_ 特殊変数

コードを入力した後に_と入力すると、最後の操作の結果が出力されます。

上矢印キー

矢印キーを押すと、現在、さらには以前のREPLセッションで実行されたコード行の履歴にアクセスできます。

ドットコマンド

REPLには、すべてドット.で始まる特別なコマンドがいくつかあります。それらは次のとおりです。

  • .help: ドットコマンドのヘルプを表示します。
  • .editor: 複数行のJavaScriptコードを簡単に記述できるように、エディターモードを有効にします。このモードになったら、Ctrl-Dを入力して記述したコードを実行します。
  • .break: 複数行の式を入力しているときに、.breakコマンドを入力すると、それ以上の入力が中止されます。Ctrl-Cを押すのと同じです。
  • .clear: REPLコンテキストを空のオブジェクトにリセットし、現在入力中の複数行の式をクリアします。
  • .load: 現在の作業ディレクトリを基準としたJavaScriptファイルを読み込みます。
  • .save: REPLセッションで入力したすべてをファイルに保存します(ファイル名を指定します)。
  • .exit: replを終了します(Ctrl-Cを2回押すのと同じです)。

REPLは、.editorを呼び出すことなく、複数行のステートメントを入力していることを認識しています.

たとえば、次のように反復を入力し始めるとします.

[1, 2, 3].forEach(num => {

enterを押すと、REPLは3つのドットで始まる新しい行に移動し、そのブロックで作業を続行できることを示します.

... console.log(num)
... })

行末に.breakと入力すると、複数行モードが停止し、ステートメントは実行されません.

JavaScriptファイルからREPLを実行する

replを使用して、JavaScriptファイルにREPLをインポートできます.

const repl = require('node:repl');

repl変数を使用すると、さまざまな操作を実行できます。REPLコマンドプロンプトを開始するには、次の行を入力します.

repl.start();

コマンドラインでファイルを実行します.

REPLの開始時に表示される文字列を渡すことができます。デフォルトは '> '(末尾にスペース)ですが、カスタムプロンプトを定義できます.

// a Unix style prompt
const local = repl.start('$ ');

REPLの終了中にメッセージを表示できます.

local.on('exit', () => {
  console.log('exiting repl');
  process.exit();
});

replドキュメントで、REPLモジュールの詳細を読むことができます.