Jak przekazać argumenty wiersza poleceń do programu Node.js?

Mam serwer WWW napisany w Node.js i chciałbym go uruchomić z określonym folderem. I'm nie jest pewien, jak uzyskać dostęp do argumentów w JavaScript. I'm uruchomić węzeł w ten sposób:

$ node server.js folder

tutaj server.js jest moim kodem serwera. Pomoc Node.js mówi, że jest to możliwe:

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

W jaki sposób uzyskałbym dostęp do tych argumentów w JavaScript? Jakoś nie udało mi się znaleźć tych informacji w sieci.

Rozwiązanie

Metoda standardowa (bez biblioteki)

Argumenty przechowywane są w process.argv.

Tutaj są dokumenty węzła dotyczące obsługi argumentów linii poleceń:

process.argv jest tablicą zawierającą argumenty wiersza poleceń. Pierwszym elementem będzie 'node', drugim elementem będzie nazwa pliku JavaScript. Następnymi elementami będą wszelkie dodatkowe argumenty wiersza poleceń.

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

Spowoduje to wygenerowanie:

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

Aby znormalizować argumenty tak, jak otrzymałaby zwykła funkcja javascript, robię to w moich skryptach powłoki node.js:

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

Zauważ, że pierwszym argumentem jest zwykle ścieżka do nodejs, a drugim argumentem jest lokalizacja skryptu, który wykonujesz.

Komentarze (12)

Optymista (node-optimist)

Sprawdź optimist library, jest o wiele lepsza niż ręczne parsowanie opcji linii poleceń.

Uaktualnienie

Optimist jest przestarzały. Spróbuj yargs, który jest aktywnym forkiem optimista.

Komentarze (4)