Ich schreibe eine Web-App in Node. Wenn ich eine JS-Datei db.js
mit einer Funktion init
darin habe, wie kann ich diese Funktion über die Befehlszeile aufrufen?
javascript
node.js
command-line
winhowes
quelle
quelle
Antworten:
Kein Kommentar dazu, warum Sie dies tun möchten oder was eine Standardpraxis sein könnte: Hier ist eine Lösung für Ihre Frage ... Beachten Sie, dass die Art der Anführungszeichen, die für Ihre Befehlszeile erforderlich sind, variieren kann.
db.js
Exportieren Sie in Ihrem dieinit
Funktion. Es gibt viele Möglichkeiten, aber zum Beispiel:Rufen Sie es dann so auf, vorausgesetzt, Sie
db.js
befinden sich im selben Verzeichnis wie Ihre Eingabeaufforderung:Für andere Leser hätte die
init
Funktion des OP alles heißen können, es ist nicht wichtig, es ist nur der spezifische Name, der in der Frage verwendet wird.quelle
module.exports.init = function () { console.log('hi'); };
undnode -e 'require("./db").init()'
irgendwie nicht für mich gearbeitet. Ich bin mir nicht sicher, was ich falsch gemacht habe, aber indem ich Ihrer Idee gefolgt bin, habe ich sie verwendetmodule.exports = myFunction,
und dannnode -e 'require("./myFunction")()'
für mich gearbeitet.node -e 'require("./index").handler(require("./fixtures/sample_event_01.json"), {}, console.log)'
. Die Mitte{}
wäre der Kontext, zögern Sie nicht, sich anzupassen. Auch console.log ist ein bisschen primitiv, aber ein guter Anfang. Natürlich können Sie auch eine dedizierte CLI.js schreiben, für die wiederum () der index.js / handler erforderlich ist, wie in anderen Kommentaren angegeben.Fügen Sie gemäß den anderen Antworten Folgendes hinzu:
someFile.js
Sie können dann Folgendes hinzufügen
package.json
Vom Terminal aus können Sie dann anrufen
Ich finde es viel einfacher, sich die Befehle zu merken und sie zu verwenden
quelle
Versuchen Sie es mit make-runnable .
Fügen Sie in db.js
require('make-runnable');
das Ende hinzu.Jetzt können Sie tun:
Alle weiteren Argumente würden an die
init
Methode übergeben.quelle
Direkt von der CLI ausführen (global)
Installieren
Verwendung dh Ausführungsfunktion "init", muss exportiert werden, siehe unten
oder
Führen Sie das Skript package.json aus (lokal).
Installieren
Konfiguration
Verwendung
Params
Alle folgenden Argumente werden als Funktionsparameter übergeben
init(param1, param2)
Wichtig
Die Funktion (in diesem Beispiel
init
) muss in die Datei exportiert werden, die sie enthältoder ES6-Export
quelle
make-runnable
, aber das ist viel besser, denke ich. Vielen Dank.npm i -g run-func
einfacher Weg:
Angenommen, Sie haben die Datei db.js in einem Hilfeverzeichnis in der Projektstruktur.
Gehen Sie jetzt in das Helfer-Verzeichnis und zur Knotenkonsole
2) erfordern die Datei db.js.
3) Rufen Sie Ihre Funktion auf (in Ihrem Fall ihre init ())
hoffe das hilft
quelle
Wenn Sie sich
db.js
in ein Modul verwandeln , können Sie es vondb_init.js
und nur verlangen :node db_init.js
.db.js:
db_init.js:
quelle
Dieser ist schmutzig, funktioniert aber
:)
Ich werde die
main()
Funktion aus meinem Skript aufrufen . Zuvor habe ich am Ende des Skripts nur main aufgerufen. Ich habe jedoch einige andere Funktionen hinzugefügt und sie aus dem Skript exportiert (um Funktionen in einigen anderen Teilen des Codes zu verwenden) - aber ich möchte die main () - Funktion nicht jedes Mal ausführen, wenn ich andere Funktionen in andere Skripte importiere.Also habe ich dies getan, in meinem Skript habe ich den Aufruf von main () entfernt und stattdessen am Ende des Skripts diese Prüfung durchgeführt:
Wenn ich diese Funktion in der CLI aufrufen möchte:
node src/myScript.js main
quelle
Ich mache ein IIFE, so ähnlich:
Dieser Code wird sofort ausgeführt und ruft die Init-Funktion auf.
quelle
node init.js
und die Datei ein IIFE enthält, wird es funktionieren. Ich glaube, ich habe Ihre Frage nicht vollständig verstanden. Es tut uns leid.(init)();
wenn Sie wollen :)Manchmal möchten Sie eine Funktion über die CLI ausführen, manchmal möchten Sie
require
sie von einem anderen Modul aus ausführen . Hier erfahren Sie, wie Sie beides tun.quelle
Einfach, in der Javascript-Datei testfile.js:
Laufen an der Eingabeaufforderung:
quelle
test
Wenn Ihre Datei nur Ihre Funktion enthält, zum Beispiel:
myFile.js:
Wenn Sie es über die Befehlszeile so aufrufen, geschieht nichts:
Aber wenn Sie Ihre Datei ändern:
myFile.js:
Dies funktioniert nun über die Befehlszeile:
quelle