Wie übergebe ich Befehlszeilenargumente an ein Node.js-Programm?
Lesezeit: 4 Minuten
Milchplus
Ich habe einen Webserver eingeschrieben Node.js und ich möchte mit einem bestimmten Ordner starten. Ich bin mir nicht sicher, wie ich auf Argumente in JavaScript zugreifen soll. Ich führe Knoten wie folgt aus:
$ node server.js folder
Hier server.js ist mein Servercode. Die Node.js-Hilfe sagt, dass dies möglich ist:
Wie würde ich auf diese Argumente in JavaScript zugreifen? Irgendwie konnte ich diese Information im Netz nicht finden.
Es ist wahrscheinlich eine gute Idee, Ihre Konfiguration zentral zu verwalten, indem Sie so etwas wie verwenden nconfgithub.com/flatiron/nconf Es hilft Ihnen bei der Arbeit mit Konfigurationsdateien, Umgebungsvariablen und Befehlszeilenargumenten.
– 250 R
26. Mai 2012 um 0:10 Uhr
Und hier ist Konfigurationmeine eigene, minimale, schreibgeschützte Schnittstelle für nconf.
– Joel Purra
26. Januar 2014 um 12:02 Uhr
Mauvis Ledford
Um die Argumente so zu normalisieren, wie sie eine normale Javascript-Funktion erhalten würde, mache ich dies in meinen node.js-Shell-Skripten:
var args = process.argv.slice(2);
Beachten Sie, dass das erste Argument normalerweise der Pfad zu nodejs und das zweite Argument der Speicherort des Skripts ist, das Sie ausführen.
Nur eine Anmerkung, dass ich diese Antwort vor 4 Jahren geschrieben habe und der Code, den ich ausführe, auch heute noch zu 100 % einwandfrei läuft. Immer noch mit den neuesten Versionen von node auf dem Laufenden bleiben und immer noch keine Probleme: Es ist nur ein einfaches Shell-Skript, Leute. Nicht Teil eines großen globalen Objekts voller JS-Bibliotheken. Ich stehe noch heute hinter meiner Antwort. Ich werde in 4 weiteren Jahren ein weiteres Update geben.
– Mauvis Ledford
5. März 2015 um 1:18 Uhr
Es ist über 6 Jahre her. Irgendein Update?
– Nuno
29. September 2021 um 15:02 Uhr
@Nuno Ich habe gerade meine ursprüngliche Antwort auf Node v16.13.2 (2022-01-11) getestet und ja, sie funktioniert 11 Jahre nach der Veröffentlichung immer noch einwandfrei. 🙂
– Mauvis Ledford
27. Januar um 13:43 Uhr
Lassen Sie uns für die nächsten fünf Jahre gehen, um das zu sehen process.argv Arbeiten;)
–Timo
14. Februar um 16:34 Uhr
Tatsächlich ist diese Lösung hilfreicher für die Entwicklung eines Befehlszeilentools mit mehr Flags und Argumenten und sollte meiner Meinung nach mehr positiv bewertet werden.
– JK-ABC
6. Februar 2015 um 3:15 Uhr
Wenn Sie diese Antwort verwenden möchten, sollten Sie die aktivere Gabel verwenden. Minimist-Lite da ersteres aufgegeben wird. Die “aktuell richtige Antwort” wäre zu verwenden process.argv.slice(2) das ist die antwort auf die eigentliche frage…
– Steam-Gamer
24. Januar um 21:32 Uhr
ddrei
Antwort 2018 basierend auf aktuellen Trends in freier Wildbahn:
Vanilla Javascript-Argumentanalyse:
const args = process.argv;
console.log(args);
Dies gibt zurück:
$ node server.js one two=three four
['node', '/home/server.js', 'one', 'two=three', 'four']
Vorpal.js: Ausgereifte / interaktive Befehlszeilenanwendungen mit Argumentanalyse.
„$ npm install -g yargs“ lieferte 1,9 MB JavaScript-Code. Wann wird dieser Wahnsinn enden, wenn eine Argv-Parser-Bibliothek zwei Megabyte Code benötigt? Erhöhte Angriffsfläche, verschwendeter RAM etc…
Kasse Optimistische Bibliothekist es viel besser, als Befehlszeilenoptionen von Hand zu analysieren.
Aktualisieren
Optimist ist veraltet. Versuchen Jahre das ist eine aktive Fork von Optimist.
„$ npm install -g yargs“ lieferte 1,9 MB JavaScript-Code. Wann wird dieser Wahnsinn enden, wenn eine Argv-Parser-Bibliothek zwei Megabyte Code benötigt? Erhöhte Angriffsfläche, verschwendeter RAM etc…
Einige großartige Antworten hier, aber alles scheint sehr komplex zu sein. Dies ist dem Zugriff von Bash-Skripten auf Argumentwerte sehr ähnlich und wird bereits standardmäßig mit node.js bereitgestellt, wie MooGoo betonte. (Nur um es jemandem verständlich zu machen, der neu bei node.js ist)
Beispiel:
$ node yourscript.js banana monkey
var program_name = process.argv[0]; //value will be "node"
var script_path = process.argv[1]; //value will be "yourscript.js"
var first_value = process.argv[2]; //value will be "banana"
var second_value = process.argv[3]; //value will be "monkey"
9501800cookie-checkWie übergebe ich Befehlszeilenargumente an ein Node.js-Programm?yes
Es ist wahrscheinlich eine gute Idee, Ihre Konfiguration zentral zu verwalten, indem Sie so etwas wie verwenden nconf github.com/flatiron/nconf Es hilft Ihnen bei der Arbeit mit Konfigurationsdateien, Umgebungsvariablen und Befehlszeilenargumenten.
– 250 R
26. Mai 2012 um 0:10 Uhr
Und hier ist Konfigurationmeine eigene, minimale, schreibgeschützte Schnittstelle für nconf.
– Joel Purra
26. Januar 2014 um 12:02 Uhr