Я пишу веб-приложение в Node. Если у меня есть JS файл db.js с функцией init в нем, как я могу вызвать эту функцию из командной строки?
Выполнить функцию в script из командной строки (Node JS)
Ответ 1
Не комментируйте, почему вы хотите это сделать, или что может быть более стандартной практикой: вот решение вашего вопроса... Имейте в виду, что тип кавычек, требуемый вашей командной строкой, может отличаться.
 В вашем db.js экспортируйте функцию init. Есть много способов, но, например:
module.exports.init = function () {
  console.log('hi');
};
 Затем назовите его так, предполагая, что ваш db.js находится в том же каталоге, что и ваша командная строка:
node -e 'require("./db").init()'
  Для других читателей функция init OP могла быть вызвана как угодно, это не важно, это просто конкретное имя, используемое в вопросе.
Ответ 2
 Что касается других ответов, добавьте следующее в someFile.js
module.exports.someFunction = function () {
  console.log('hi');
};
  Затем вы можете добавить следующее в package.json
"scripts": {
   "myScript": "node -e 'require(\"./someFile\").someFunction()'"
}
Из терминала вы можете позвонить
npm run myScript
 Я считаю, что это гораздо проще запомнить команды и использовать их
Ответ 3
Попробуйте make-runnable.
В db.js добавьте require('make-runnable'); в конец.
Теперь вы можете сделать:
node db.js init
Любые дополнительные аргументы передаются методу init.
Ответ 4
Установите run-func в свой проект
npm i -D run-func
 Запустите любую экспортированную функцию
run-func db.js init
  Все последующие аргументы будут переданы в качестве параметров функции init(param1, param2)
run-func db.js init param1 param2
 Это также можно запустить из раздела "скрипты" в package.json
"db-init": "run-func db.js init"
  Важно, что функция (в этом примере init) должна быть экспортирована в файл, содержащий ее
module.exports = { init };
 или ES6 экспорт
export { init };
		Ответ 5
простой способ:
скажем, у вас есть файл db.js в каталоге помощников в структуре проекта.
теперь перейдите в каталог помощников и перейдите в консоль node
 helpers $ node
2) требуется файл db.js
> var db = require("./db")
3) вызовите свою функцию (в вашем случае ее init())
> db.init()
надеюсь, что это поможет
Ответ 6
Если вы превратите db.js в модуль, вы можете потребовать его от db_init.js и просто: node db_init.js.
db.js:
module.exports = {
  method1: function () { ... },
  method2: function () { ... }
}
db_init.js:
var db = require('./db');
db.method1();
db.method2();
		Ответ 7
 Этот грязный, но работает :)
 Я буду вызывать функцию main() из моего скрипта. Ранее я просто помещал вызовы main в конец скрипта. Однако я добавил некоторые другие функции и экспортировал их из скрипта (чтобы использовать функции в некоторых других частях кода) - но я не хочу выполнять функцию main() каждый раз, когда импортирую другие функции в другие скрипты.
Итак, я сделал это, в моем скрипте я удалил вызов main(), и вместо этого в конце скрипта я поставил эту проверку:
if (process.argv.includes('main')) {
   main();
}
  Поэтому, когда я хочу вызвать эту функцию в CLI: node src/myScript.js main
Ответ 8
Я делаю IIFE, что-то вроде этого:
(() => init())();
 этот код будет выполнен немедленно и вызовет функцию инициализации.
Ответ 9
Если ваш файл просто содержит вашу функцию, например:
myFile.js:
function myMethod(someVariable) {
    console.log(someVariable)
}
Вызов из командной строки, как это, ничего не произойдет:
node myFile.js
Но если вы измените свой файл:
myFile.js:
myMethod("Hello World");
function myMethod(someVariable) {
    console.log(someVariable)
}
Теперь это будет работать из командной строки:
node myFile.js
		Ответ 10
Простой, в файле javascript testfile.js:
module.exports.test = function () {
   console.log('hi');
};
this.test();
Выполняется в командной строке:
node testfile.js