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

Ich habe einen Webserver in Node.js geschrieben und ich möchte mit einem bestimmten Ordner zu starten. Ich bin nicht sicher, wie man Argumente in JavaScript zugreifen. I'm läuft Node wie folgt:

$ node server.js folder

hier ist server.js mein Server-Code. 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 war ich nicht in der Lage, diese Informationen im Web zu finden.

Lösung

Standardmethode (keine Bibliothek)

Die Argumente werden in process.argv gespeichert

Hier sind die Node-Dokumente zum Umgang mit Kommandozeilenargumenten:

process.argv ist ein Array, das die Kommandozeilenargumente enthält. Das erste Element ist "node", das zweite Element ist der Name der JavaScript-Datei. Die nächsten Elemente sind alle zusätzlichen Befehlszeilenargumente.

// print process.argv
process.argv.forEach(function (val, index, array) {
  console.log(index + ': ' + val);
});

Dies wird erzeugt:

$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
Kommentare (8)

Um die Argumente zu normalisieren, wie eine reguläre Javascript-Funktion erhalten würde, tue ich dies in meinem node.js Shell-Skripte:

var args = process.argv.slice(2);

Beachten Sie, dass das erste Argument normalerweise der Pfad zu nodejs ist und das zweite Argument der Ort des Skripts ist, das Sie ausführen.

Kommentare (12)

Optimist (Knoten-Optimist)

Schauen Sie sich optimist library an, es ist viel besser als das Parsen von Kommandozeilenoptionen von Hand.

Aktualisierung

Optimist ist veraltet. Versuchen Sie yargs, das ein aktiver Fork von optimist ist.

Kommentare (4)