Estoy escribiendo una aplicación web en Node. Si tengo algún archivo JS db.js
con una función init
, ¿cómo podría llamar a esa función desde la línea de comandos?
javascript
node.js
command-line
winhowes
fuente
fuente
Respuestas:
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
, exportar lainit
función. Hay muchas formas, pero por ejemplo:Luego llámelo de esta manera, suponiendo que
db.js
esté en el mismo directorio que su símbolo del sistema:Para otros lectores, la
init
función del OP podría haberse llamado de cualquier forma, no es importante, es solo el nombre específico utilizado en la pregunta.fuente
module.exports.init = function () { console.log('hi'); };
ynode -e 'require("./db").init()'
de alguna manera no funcionó para mí. No estoy seguro de lo que hice mal, pero siguiendo su idea, usémodule.exports = myFunction,
y luegonode -e 'require("./myFunction")()'
trabajé para mí.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. El medio{}
sería el contexto, siéntase libre de adaptarse. También console.log es un poco primitivo pero un buen comienzo. Por supuesto, también puede escribir un CLI.js dedicado que a su vez requiera () el index.js / handler como se indica en otros comentarios.Según las otras respuestas, agregue lo siguiente a
someFile.js
Luego puede agregar lo siguiente a
package.json
Desde la terminal, puede llamar
Me parece una forma mucho más fácil de recordar los comandos y usarlos.
fuente
Prueba make-runnable .
En db.js, agregue
require('make-runnable');
hasta el final.Ahora puedes hacer:
Cualquier argumento adicional pasaría al
init
método.fuente
Ejecutar directamente desde CLI (global)
Instalar en pc
Uso, es decir, ejecutar la función "init", debe exportarse, ver la parte inferior
o
Ejecutar desde el script package.json (local)
Instalar en pc
Preparar
Uso
Params
Los siguientes argumentos se pasarán como parámetros de función
init(param1, param2)
Importante
la función (en este ejemplo
init
) debe exportarse en el archivo que la contieneo exportación ES6
fuente
make-runnable
, pero creo que esto es mucho mejor que eso. Gracias.npm i -g run-func
manera simple:
supongamos que tiene el archivo db.js en un directorio de ayuda en la estructura del proyecto.
ahora vaya dentro del directorio de ayudantes y vaya a la consola del nodo
2) requiere el archivo db.js
3) llame a su función (en su caso, su init ())
espero que esto ayude
fuente
Si se convierte
db.js
en un módulo, puede solicitarlodb_init.js
y simplemente:node db_init.js
.db.js:
db_init.js:
fuente
Este está sucio pero funciona
:)
Estare llamando
main()
función 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:
Entonces, cuando quiero llamar a esa función en CLI:
node src/myScript.js main
fuente
Hago un IIFE, algo así:
Este código se ejecutará inmediatamente e invocará la función init.
fuente
node init.js
y el archivo contiene un IIFE, funcionará. Creo que no entendí completamente tu pregunta. Lo siento.(init)();
si quieres :)A veces desea ejecutar una función a través de CLI, a veces lo desea
require
desde otro módulo. Aquí se explica cómo hacer ambas cosas.fuente
Simple, en el archivo javascript testfile.js:
Ejecutando en el indicador:
fuente
test
se ejecuta cada vez, por lo que tendría que cambiar el archivo para llamar a otra función)Si su archivo solo contiene su función, por ejemplo:
myFile.js:
Al llamarlo desde la línea de comando así no sucederá nada:
Pero si cambia su archivo:
myFile.js:
Ahora esto funcionará desde la línea de comando:
fuente