Я пишу веб-приложение в Node. Если у меня есть JS-файл db.js
с функцией, init
как я могу вызвать эту функцию из командной строки?
javascript
node.js
command-line
winhowes
источник
источник
Ответы:
Не комментируйте, почему вы хотите это сделать, или что может быть более стандартной практикой: вот решение вашего вопроса ... Имейте в виду, что тип кавычек, требуемый вашей командной строкой, может отличаться.
В вашем
db.js
, экспортируйтеinit
функцию. Есть много способов, но, например:Затем назовите его так, предполагая, что вы находитесь
db.js
в том же каталоге, что и ваша командная строка:Для других читателей,
init
функция OP могла бы называться как угодно, это не важно, это просто конкретное имя, используемое в вопросе.источник
module.exports.init = function () { console.log('hi'); };
иnode -e 'require("./db").init()'
у меня не получилось как-то. Я не уверен, что я сделал неправильно, но, следуя твоей идее, я использовалmodule.exports = myFunction,
, а затемnode -e 'require("./myFunction")()'
работал на меня.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. Середина{}
будет контекстом, не стесняйтесь регулировать. Также console.log немного примитивен, но хорошее начало. Конечно, вы также можете написать специальный CLI.js, который, в свою очередь, требует () индексный обработчик index.js /, как указано в других комментариях.Согласно другим ответам, добавьте следующее к
someFile.js
Затем вы можете добавить следующее к
package.json
Из терминала вы можете позвонить
Я считаю, что это гораздо проще запомнить команды и использовать их
источник
Попробуйте сделать работоспособным .
В db.js добавь
require('make-runnable');
в конец.Теперь вы можете сделать:
Любые дальнейшие аргументы будут переданы
init
методу.источник
Запускать прямо из CLI (глобально)
устанавливать
Использование т.е. запуск функции "init", ее необходимо экспортировать, см. Внизу
или
Запустить из скрипта package.json (локальный)
устанавливать
Настроить
использование
Params
Все последующие аргументы будут переданы в качестве параметров функции
init(param1, param2)
Важный
функция (в этом примере
init
) должна быть экспортирована в файл, содержащий ееили ES6 экспорт
источник
make-runnable
, но это намного лучше, подумал я. Спасибо.npm i -g run-func
простой способ:
скажем, у вас есть файл db.js в каталоге помощников в структуре проекта.
Теперь перейдите в каталог помощников и перейдите в консоль узла.
2) требуется файл db.js
3) вызвать вашу функцию (в вашем случае ее init ())
надеюсь это поможет
источник
Если вы превращаетесь
db.js
в модуль, вы можете потребовать его отdb_init.js
и просто:node db_init.js
.db.js:
db_init.js:
источник
Этот грязный, но работает
:)
Я буду вызывать
main()
функцию из моего скрипта. Ранее я просто помещал вызовы main в конец скрипта. Однако я добавил некоторые другие функции и экспортировал их из скрипта (чтобы использовать функции в некоторых других частях кода) - но я не хочу выполнять функцию main () каждый раз, когда я импортирую другие функции в другие скрипты.Итак, я сделал это, в моем скрипте я удалил вызов main (), и вместо этого в конце скрипта я поставил эту проверку:
Поэтому, когда я хочу вызвать эту функцию в CLI:
node src/myScript.js main
источник
Я делаю IIFE, что-то вроде этого:
этот код будет выполнен немедленно и вызовет функцию init.
источник
node init.js
и файл содержит IIFE, он будет работать. Я думаю, что я не до конца понял ваш вопрос. Сожалею.(init)();
если хотите :)Иногда вы хотите запустить функцию через CLI, иногда вы хотите использовать
require
ее из другого модуля. Вот как это сделать.источник
Просто, в файле javascript testfile.js:
Запуск по приглашению:
источник
test
он запускается каждый раз, поэтому вам придется изменить файл для вызова другой функции)Если ваш файл просто содержит вашу функцию, например:
myFile.js:
При его вызове из командной строки ничего не произойдет:
Но если вы измените свой файл:
myFile.js:
Теперь это будет работать из командной строки:
источник