Hvordan sender jeg kommandolinjeargumenter til et Node.js-program?

Jeg har en webserver skrevet i Node.js, og jeg vil gerne starte med en bestemt mappe. Jeg er ikke sikker på, hvordan man får adgang til argumenter i JavaScript. I'm kører node på denne måde:

$ node server.js folder

her server.js er min serverkode. Node.js hjælp siger, at dette er muligt:

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

Hvordan kan jeg få adgang til disse argumenter i JavaScript? På en eller anden måde var jeg ikke i stand til at finde disse oplysninger på nettet.

Løsning

Standardmetode (uden bibliotek)

Argumenterne gemmes i process.argv.

Her er [node-dokumentationen om håndtering af kommandolinjeargs:] (http://nodejs.org/docs/latest/api/process.html#process_process_argv)

process.argv er et array, der indeholder kommandolinjeargumenterne. Det første element vil være 'node', det andet element vil være navnet på JavaScript-filen. De næste elementer er eventuelle yderligere kommandolinjeargumenter.

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

Dette vil generere:

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

For at normalisere argumenterne som en almindelig javascript-funktion ville modtage, gør jeg dette i mine node.js-shell-scripts:

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

Bemærk, at det første arg normalt er stien til nodejs, og det andet arg er placeringen af det script, som du udfører.

Kommentarer (12)

Optimist (node-optimist)

Tjek optimist library, det er meget bedre end at analysere kommandolinjeindstillinger i hånden.

opdatering

Optimist er forældet. Prøv yargs, som er en aktiv fork af optimist.

Kommentarer (4)