В python есть приятная функция, python -i
. Например, python -i myprogram.py
запустит программу, а затем войдет в интерактивный режим, как если бы я вложил всю программу в интерактивную оболочку.
Есть ли аналогичная команда в node.js?
В python есть приятная функция, python -i
. Например, python -i myprogram.py
запустит программу, а затем войдет в интерактивный режим, как если бы я вложил всю программу в интерактивную оболочку.
Есть ли аналогичная команда в node.js?
Я думаю, что исполняемый файл 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>
.
Документы на https://nodejs.org/api/cli.html
Предварительная загрузка указанного модуля при запуске.
Следует правилам require() модуля. Модуль может быть либо путь к файлу или имя модуля узла.
node -i -r ./myprogram.js
Оцените следующий аргумент как JavaScript. Модули, которые являются предопределенный в REPL также может быть использован в сценарии.
node -i -e "console.log('A message')"
Эти функции были добавлены с момента предыдущего ответа в 2014 году со следующими запросами.
К сожалению, node не имеет встроенного решения для этого. Как уже упоминалось здесь, вы можете предварительно загружать модули с помощью параметра -r
, но вы по-прежнему не можете получить к ним доступ из REPL, что делает его немного бесполезным.
До сих пор лучшим обходным решением, которое я нашел, является
cat ./test.js - | node -i
Где test.js - файл, который вы хотите запустить. Это отправляет его поверх stdin, как если бы вы сами ввели файл, а затем ожидаете дополнительного ввода. Одним из недостатков является то, что в командной строке будет отображаться файл и результат каждой строки.
вы можете ввести nodeJS, а затем использовать команду .load/path/file.js, чтобы импортировать файл в текущую программу js узла