Wie übergebe ich Befehlszeilenargumente an ein Node.js-Programm?

Lesezeit: 4 Minuten

Wie ubergebe ich Befehlszeilenargumente an ein Nodejs Programm
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:

$ node -h
Usage: node [options] script.js [arguments]

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 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


Wie ubergebe ich Befehlszeilenargumente an ein Nodejs Programm
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


Wie ubergebe ich Befehlszeilenargumente an ein Nodejs Programm
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']

Offizielle Dokumente


Am häufigsten verwendete NPM-Pakete für das Analysieren von Argumenten:

Minimal: Für minimales Analysieren von Argumenten.

Commander.js: Am häufigsten verwendetes Modul zur Argumentanalyse.

Miau: Leichtere Alternative zu Commander.js

Yargs: Anspruchsvollere Argumentanalyse (schwer).

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…

    – joonas.fi

    13. Oktober 2016 um 17:21 Uhr

  • einfache Möglichkeit, benutzerdefinierte Argumente auszuwählen: const list_arg = process.argv.filter((arg) => ([‘-list’, ‘-l’].includes(arg))).toString();

    – Subramanya Rao

    23. November 2021 um 15:40 Uhr


1646517910 841 Wie ubergebe ich Befehlszeilenargumente an ein Nodejs Programm
Sanghyun Lee

Optimist (Knoten-Optimist)

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…

    – joonas.fi

    13. Oktober 2016 um 17:21 Uhr

  • einfache Möglichkeit, benutzerdefinierte Argumente auszuwählen: const list_arg = process.argv.filter((arg) => ([‘-list’, ‘-l’].includes(arg))).toString();

    – Subramanya Rao

    23. November 2021 um 15:40 Uhr


1646517910 619 Wie ubergebe ich Befehlszeilenargumente an ein Nodejs Programm
Paul van Jaarsveld

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"

950180cookie-checkWie übergebe ich Befehlszeilenargumente an ein Node.js-Programm?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy