uncaught nodejs node nexttick memoryusage javascript node.js command-line

javascript - nodejs - Ejecutar función en script desde la línea de comando(Nodo JS)



stdin nodejs (10)

Este está sucio pero funciona :)

Llamaré a la función main() desde mi script. Anteriormente solo ponía llamadas a main al final del script. Sin embargo, agregué algunas otras funciones y las exporté del script (para usar funciones en otras partes del código), pero no quiero ejecutar la función main () cada vez que importo otras funciones en otros scripts.

Así que hice esto, en mi script eliminé call to main (), y en su lugar al final del script puse esta verificación:

if (process.argv.includes(''main'')) { main(); }

Entonces, cuando quiero llamar a esa función en la CLI: node src/myScript.js main

Estoy escribiendo una aplicación web en Node. Si tengo un archivo JS db.js con una función init , ¿cómo podría llamar a esa función desde la línea de comandos?


Hago un IIFE, algo así:

(() => init())();

Este código se ejecutará inmediatamente e invocará la función init.


Instale run-func a su proyecto

npm i -D run-func

Ejecute cualquier función exportada

run-func db.js init

Los siguientes argumentos se pasarán como parámetros de función init(param1, param2)

run-func db.js init param1 param2

Esto también puede ejecutarse desde la sección "scripts" en package.json

"db-init": "run-func db.js init"

Importante: la función (en este ejemplo, init ) debe exportarse en el archivo que la contiene

module.exports = { init };

o exportación ES6

export { init };


No hay comentarios sobre por qué quiere hacer esto, o lo que podría ser una práctica más estándar: aquí hay una solución a su pregunta ... Tenga en cuenta que el tipo de citas requeridas por su línea de comando puede variar.

En su db.js , exporte la función init . Hay muchas formas, pero por ejemplo:

module.exports.init = function () { console.log(''hi''); };

Luego db.js esta manera, suponiendo que su db.js esté en el mismo directorio que su símbolo del sistema:

node -e ''require("./db").init()''

Para otros lectores, la función init del OP podría haberse llamado de cualquier forma, no es importante, es solo el nombre específico utilizado en la pregunta.


Prueba make-runnable .

En db.js, agrega require(''make-runnable''); hasta el final.

Ahora puedes hacer:

node db.js init

Cualquier argumento adicional pasaría al método init .


Según las otras respuestas, agregue lo siguiente a someFile.js

module.exports.someFunction = function () { console.log(''hi''); };

Luego puede agregar lo siguiente a package.json

"scripts": { "myScript": "node -e ''require(/"./someFile/").someFunction()''" }

Desde la terminal, puede llamar

npm run myScript

Me parece una forma mucho más fácil de recordar los comandos y usarlos.


Si convierte db.js en un módulo, puede requerirlo de db_init.js y solo: node db_init.js .

db.js:

module.exports = { method1: function () { ... }, method2: function () { ... } }

db_init.js:

var db = require(''./db''); db.method1(); db.method2();


Si su archivo solo contiene su función, por ejemplo:

myFile.js:

function myMethod(someVariable) { console.log(someVariable) }

Al llamarlo desde la línea de comando así no sucederá nada:

node myFile.js

Pero si cambia su archivo:

myFile.js:

myMethod("Hello World"); function myMethod(someVariable) { console.log(someVariable) }

Ahora esto funcionará desde la línea de comando:

node myFile.js


Simple, en el archivo javascript testfile.js:

module.exports.test = function () { console.log(''hi''); }; this.test();

Ejecutando en el indicador:

node testfile.js


manera simple:

supongamos que tiene el archivo db.js en un directorio de ayuda en la estructura del proyecto.

ahora ve al directorio de ayudantes y ve a la consola del nodo

helpers $ node

2) requiere el archivo db.js

> var db = require("./db")

3) llame a su función (en su caso, su init ())

> db.init()

espero que esto ayude