Skip to content

Как использовать REPL в Node.js

Команда node используется для запуска скриптов Node.js:

bash
node script.js

Если запустить команду node без скрипта для выполнения или без аргументов, запустится сессия REPL:

bash
node

ПРИМЕЧАНИЕ

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 будет проходить через эти три шага для каждого фрагмента кода, который мы выполняем в REPL, пока мы не выйдем из сессии. Именно отсюда REPL получил свое название.

Node автоматически печатает результат любой строки кода JavaScript без необходимости указывать ему это делать. Например, введите следующую строку и нажмите Enter:

bash
> 5==5
true
>

Обратите внимание на разницу в выводах двух приведенных выше строк. Node REPL напечатал undefined после выполнения console.log(), тогда как, с другой стороны, он просто напечатал результат 5== '5'. Необходимо помнить, что первое — это просто оператор в JavaScript, а второе — выражение.

В некоторых случаях код, который вы хотите протестировать, может потребовать нескольких строк. Например, допустим, вы хотите определить функцию, которая генерирует случайное число, в сессии REPL введите следующую строку и нажмите Enter:

javascript
function generateRandom()
...

REPL Node достаточно умен, чтобы определить, что вы еще не закончили писать свой код, и он перейдет в многострочный режим, чтобы вы могли ввести больше кода. Теперь завершите определение вашей функции и нажмите Enter:

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

Специальная переменная:

Если после некоторого кода вы введете _, это выведет результат последней операции.

Клавиша со стрелкой вверх:

Если вы нажмете клавишу со стрелкой вверх, вы получите доступ к истории предыдущих строк кода, выполненных в текущем и даже предыдущих сессиях REPL.

Команды с точкой

REPL имеет некоторые специальные команды, все начинающиеся с точки .. Это:

  • .help: показывает справку по командам с точкой.
  • .editor: включает режим редактора для удобного написания многострочного кода JavaScript. После перехода в этот режим введите ctrl-D для запуска написанного кода.
  • .break: при вводе многострочного выражения команда .break прервет дальнейший ввод. То же самое, что и нажатие ctrl-C.
  • .clear: сбрасывает контекст REPL до пустого объекта и очищает любое многострочное выражение, вводимое в данный момент.
  • .load: загружает файл JavaScript относительно текущего рабочего каталога.
  • .save: сохраняет все введенное в сессии REPL в файл (укажите имя файла).
  • .exit: выходит из REPL (то же самое, что и дважды нажатие ctrl-C).

REPL распознает, когда вы набираете многострочное выражение, без необходимости вызывать .editor. Например, если вы начнете вводить итерацию следующим образом:

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

и нажмете Enter, REPL перейдет на новую строку, начинающуюся с трех точек, указывая, что вы можете продолжить работу над этим блоком.

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

Если вы введете .break в конце строки, многострочный режим остановится, и выражение не будет выполнено.

Запуск REPL из файла JavaScript

Мы можем импортировать 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.