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()
...

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

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

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

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

Стрелка вверх:

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

Dot команды

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

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

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

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

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

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('выход из repl');
  process.exit();
});

Вы можете узнать больше о модуле REPL в документации REPL.