J'écris une application web dans Node. Si j'ai un fichier JS db.js
avec une fonction init
, comment pourrais-je appeler cette fonction à partir de la ligne de commande?
javascript
node.js
command-line
winhowes
la source
la source
Réponses:
Aucun commentaire sur la raison pour laquelle vous voulez faire cela, ou ce qui pourrait être une pratique plus standard: voici une solution à votre question .... Gardez à l'esprit que le type de guillemets requis par votre ligne de commande peut varier.
Dans votre
db.js
, exportez lainit
fonction. Il existe de nombreuses façons, mais par exemple:Ensuite, appelez-le comme ceci, en supposant que votre se
db.js
trouve dans le même répertoire que votre invite de commande:Pour les autres lecteurs, la
init
fonction du PO aurait pu s'appeler n'importe quoi, ce n'est pas important, c'est juste le nom spécifique utilisé dans la question.la source
module.exports.init = function () { console.log('hi'); };
etnode -e 'require("./db").init()'
n'a pas fonctionné pour moi en quelque sorte. Je ne suis pas sûr de ce que j'ai fait de mal, mais en suivant votre idée, j'ai utilisémodule.exports = myFunction,
, puisnode -e 'require("./myFunction")()'
travaillé pour moi.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. Le milieu{}
serait le contexte, n'hésitez pas à vous ajuster. Aussi console.log est un peu primitif mais un bon début. Bien sûr, vous pouvez également écrire un CLI.js dédié qui à son tour nécessite () est l'index.js / handler comme indiqué dans d'autres commentaires.Comme pour les autres réponses, ajoutez ce qui suit à
someFile.js
Vous pouvez ensuite ajouter ce qui suit à
package.json
Depuis le terminal, vous pouvez ensuite appeler
Je trouve cela un moyen beaucoup plus facile de se souvenir des commandes et de les utiliser
la source
Essayez make-runnable .
Dans db.js, ajoutez
require('make-runnable');
à la fin.Vous pouvez maintenant:
Tout argument supplémentaire serait passé à la
init
méthode.la source
Exécuter directement à partir de CLI (global)
Installer
Utilisation c'est à dire exécuter la fonction "init", elle doit être exportée, voir en bas
ou
Exécuter à partir du script package.json (local)
Installer
Installer
Usage
Params
Tous les arguments suivants seront passés en tant que paramètres de fonction
init(param1, param2)
Important
la fonction (dans cet exemple
init
) doit être exportée dans le fichier qui la contientou export ES6
la source
make-runnable
, mais c'est beaucoup mieux que ça, je pense. Merci.npm i -g run-func
manière simple:
disons que vous avez un fichier db.js dans un répertoire helpers de la structure du projet.
allez maintenant dans le répertoire helpers et allez dans la console des nœuds
2) nécessite un fichier db.js
3) appelez votre fonction (dans votre cas, son init ())
J'espère que cela t'aides
la source
Si vous mettez
db.js
dans un module , vous pouvez demander à partirdb_init.js
et juste:node db_init.js
.db.js:
db_init.js:
la source
Celui-ci est sale mais fonctionne
:)
J'appellerai la
main()
fonction de mon script. Auparavant, je mettais simplement les appels à main à la fin du script. Cependant, j'ai ajouté d'autres fonctions et les ai exportées à partir du script (pour utiliser des fonctions dans d'autres parties du code) - mais je ne veux pas exécuter la fonction main () chaque fois que j'importe d'autres fonctions dans d'autres scripts.J'ai donc fait cela, dans mon script j'ai supprimé l'appel à main (), et à la fin du script j'ai mis cette vérification:
Donc, quand je veux appeler cette fonction en CLI:
node src/myScript.js main
la source
Je fais un IIFE, quelque chose comme ça:
ce code sera exécuté immédiatement et invoquera la fonction init.
la source
node init.js
et que le fichier contient un IIFE, cela fonctionnera. Je pense que je n'ai pas bien compris votre question. Désolé.(init)();
si vous le souhaitez :)Parfois, vous souhaitez exécuter une fonction via CLI, parfois vous le souhaitez à
require
partir d'un autre module. Voici comment faire les deux.la source
Simple, dans le fichier javascript testfile.js:
Exécution à l'invite:
la source
test
est exécuté à chaque fois, vous devrez donc changer le fichier pour appeler une autre fonction)Si votre fichier contient juste votre fonction, par exemple:
myFile.js:
L'appeler à partir de la ligne de commande comme ceci ne se passera pas:
Mais si vous changez votre fichier:
myFile.js:
Maintenant, cela fonctionnera à partir de la ligne de commande:
la source