Node.js REPL の使い方

Node.js REPL とは?

Node.js には、JavaScript コードを対話的に実行できる組み込みの REPL (Read-Eval-Print Loop) 環境が付属しています。REPL はターミナルからアクセスでき、小さなコードの断片を試すのに最適な方法です。

Node.js REPL の使い方

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

node script.js

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

node

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

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

 node
>

コマンドはアイドル状態のままで、何かを入力するのを待ちます。

ヒント: ターミナルの開き方がわからない場合は、「(お使いのオペレーティングシステム名) ターミナル 開き方」で検索してみてください。

REPL は、JavaScript コードを入力するのを待っています。

簡単なものから始めましょう。

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

最初の値 `test` は、コンソールに出力するように指示したものです。次に表示される `undefined` は、`console.log()` を実行した戻り値です。Node はこのコード行を読み取り、評価し、結果を出力した後、再び次のコード行を待つ状態に戻りました。Node は、セッションを終了するまで、REPL で実行するすべてのコードについて、これら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  = ('node:repl');

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

repl.start();

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

node repl.js

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

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

REPL を終了する際にメッセージを表示することができます。

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

REPL モジュールの詳細については、REPL ドキュメントを参照してください。