Skip to content

Node.js REPL の使い方

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

bash
node script.js

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

bash
node

NOTE

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

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

bash
> node
>

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

TIP

ターミナルを開く方法がわからない場合は、「あなたのオペレーティングシステムでターミナルを開く方法」を Google 検索してください。

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

簡単にはじめて、次を入力してみましょう。

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

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

Node は、指示する必要なく、JavaScript コードの行の結果を自動的に出力します。例えば、次の行を入力して Enter キーを押してください。

bash
> 5==5
true
>

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

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

javascript
function generateRandom()
...

Node REPL は、コードの記述がまだ終わっていないことを判断し、より多くのコードを入力するための複数行モードになります。これで関数の定義を完成させ、Enter キーを押します。

javascript
function generateRandom()
...return Math.random()

特殊変数:

コードの後に _ と入力すると、直前の操作の結果が出力されます。

上方向キー:

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

ドットコマンド

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

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

REPL は.editorを呼び出す必要なく、複数行ステートメントを入力していることを認識します。たとえば、次のように繰り返し処理を入力し始めるとします。

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

Enter キーを押すと、REPL は 3 つのドットで始まる新しい行に進み、そのブロックの作業を続けることができます。

javascript
1... console.log (num)
2...}

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

JavaScript ファイルからの REPL の実行

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

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

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

javascript
repl.start()

コマンドラインでファイルを走査します。

bash
node repl.js

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

javascript
// Unixスタイルのプロンプト
const local = repl.start('$ ')

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

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

REPL モジュールについて詳しくは、repl ドキュメントをご覧ください。