REPL — интерактивный режим
REPL — интерактивный режим Node.js. Название складывается из слов Read, Eval, Print, Loop: прочитать строку, выполнить, напечатать результат и ждать следующую. Он нужен, чтобы быстро проверить выражение или функцию, не создавая файл.
Запуск
Наберите node без имени файла:
nodeПоявится приглашение >. Вводите выражения — результат печатается сразу:
> 2 + 3
5
> 'blog'.toUpperCase()
'BLOG'
> [1, 2, 3].map((n) => n * 2)
[ 2, 4, 6 ]Писать console.log() не нужно: REPL сам показывает значение каждого выражения.
Переменные и последний результат
Переменные живут до выхода из REPL. Специальная переменная _ хранит результат предыдущего выражения:
> const posts = ['Первая статья', 'Вторая статья']
undefined
> posts.length
2
> _ * 10
20undefined после объявления — это нормально: само объявление ничего не возвращает.
Встроенные модули
Встроенные модули в REPL уже подключены — их можно использовать по имени без import:
> path.extname('post.json')
'.json'
> os.platform()
'win32'Верхнеуровневый await тоже работает: наберите await fs.promises.readdir('.'), чтобы увидеть список файлов текущей папки.
Команды REPL
Команды начинаются с точки:
| Команда | Что делает |
|---|---|
.help | Список команд |
.editor | Ввод нескольких строк, завершается Ctrl+D |
.load app.js | Выполняет файл в текущем сеансе |
.exit | Выход |
Выйти можно и двойным нажатием Ctrl+C. Клавиша Tab дополняет имена: наберите posts. и нажмите Tab дважды, чтобы увидеть все методы массива.
Частая ошибка
Команду node app.js нужно вводить в обычном терминале, а не внутри REPL. Если набрать её после приглашения >, Node.js воспримет её как JavaScript:
> node app.js
Uncaught ReferenceError: node is not definedВыйдите из REPL командой .exit и запустите файл снова.