Hoe geef ik opdrachtregelargumenten door aan een Node.js programma?

Ik heb een webserver geschreven in Node.js en ik zou willen starten met een specifieke map. Ik'ben niet zeker hoe ik toegang krijg tot argumenten in JavaScript. Ik'm run node als volgt:

$ node server.js folder

hier server.js is mijn server code. Node.js help zegt dat dit mogelijk is:

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

Hoe krijg ik toegang tot deze argumenten in JavaScript? Op de een of andere manier heb ik deze informatie niet op het web kunnen vinden.

Oplossing

Standaardmethode (geen bibliotheek)

De argumenten worden opgeslagen in process.argv

Hier zijn de node docs over het omgaan met commandoregel args:

process.argv is een array die de commandoregel argumenten bevat. Het eerste element is 'node' het tweede element is de naam van het JavaScript bestand. De volgende elementen zijn eventuele extra commandoregel argumenten.

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

Dit zal genereren:

$ 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
Commentaren (8)

Om de argumenten te normaliseren zoals een gewone javascript functie zou ontvangen, doe ik dit in mijn node.js shell scripts:

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

Merk op dat de eerste arg meestal het pad naar nodejs is, en de tweede arg de locatie van het script dat je aan het uitvoeren bent.

Commentaren (12)

Optimist (node-optimist)

Kijk eens naar optimist library, het is veel beter dan commandoregelopties met de hand te parsen.

Update

Optimist is deprecated. Probeer yargs dat is een actieve fork van optimist.

Commentaren (4)