Подтвердить что ты не робот

Что такое node.js аналог python -i: запустить и ввести интерактивный режим?

В python есть приятная функция, python -i. Например, python -i myprogram.py запустит программу, а затем войдет в интерактивный режим, как если бы я вложил всю программу в интерактивную оболочку.

Есть ли аналогичная команда в node.js?

4b9b3361

Ответ 1

Я думаю, что исполняемый файл node не позволяет объединить -i с любым другим аргументом файла.

Это, вероятно, не решение, которое вы хотели бы прочитать. Однако это сработало для меня. Существует модуль под названием REPL, который в основном позволяет вам делать это вручную. Итак, я понял, что могу создать обертку вокруг любого файла, как показано ниже:

#!/bin/bash

COMMAND=$(cat <<EOF
(function(){
    var repl = require('repl');

    process.stdin.push('.load ${1}\n');

    repl.start({
        useGlobal:true,
        ignoreUndefined:true,
        prompt:'> '
    });
})();
EOF
)

node -e "${COMMAND}"

Предположим, вы вызываете этот script nodejs, тогда я могу вызвать этот script что-то вроде

nodejs ./demo.js

Он запускает REPL программно и загружает ваш script в него. Это было бы эквивалентно открытию сеанса REPL вручную, а затем выполнить команду .load <file>.

Ответ 2

Документы на https://nodejs.org/api/cli.html

-r, --require module

Предварительная загрузка указанного модуля при запуске.

Следует правилам require() модуля. Модуль может быть либо путь к файлу или имя модуля узла.

node -i -r ./myprogram.js

-e, --eval "script"

Оцените следующий аргумент как JavaScript. Модули, которые являются предопределенный в REPL также может быть использован в сценарии.

node -i -e "console.log('A message')"

Эти функции были добавлены с момента предыдущего ответа в 2014 году со следующими запросами.

Ответ 3

К сожалению, node не имеет встроенного решения для этого. Как уже упоминалось здесь, вы можете предварительно загружать модули с помощью параметра -r, но вы по-прежнему не можете получить к ним доступ из REPL, что делает его немного бесполезным.

До сих пор лучшим обходным решением, которое я нашел, является

cat ./test.js - | node -i

Где test.js - файл, который вы хотите запустить. Это отправляет его поверх stdin, как если бы вы сами ввели файл, а затем ожидаете дополнительного ввода. Одним из недостатков является то, что в командной строке будет отображаться файл и результат каждой строки.

Ответ 4

вы можете ввести nodeJS, а затем использовать команду .load/path/file.js, чтобы импортировать файл в текущую программу js узла