Ako môžem programu Node.js odovzdať argumenty príkazového riadka?

Mám webový server napísaný v Node.js a chcel by som ho spustiť s konkrétnym priečinkom. Nie som si istý, ako pristupovať k argumentom v JavaScripte. Spúšťam node takto:

$ node server.js folder

tu server.js je môj serverový kód. Nápoveda k Node.js hovorí, že je to možné:

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

Ako by som sa dostal k týmto argumentom v JavaScripte? Akosi sa mi nepodarilo nájsť túto informáciu na webe.

Riešenie

Štandardná metóda (bez knižnice)

Argumenty sú uložené v súbore process.argv

Tu sú dokumenty uzla o spracovaní argumentov príkazového riadku:

process.argv je pole obsahujúce argumenty príkazového riadku. Prvým prvkom bude 'node', druhým prvkom bude názov súboru JavaScript. Ďalšími prvkami budú všetky ďalšie argumenty príkazového riadka.

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

Týmto sa vygeneruje:

$ 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
Komentáre (8)

Ak chcete normalizovať argumenty tak, ako by ich dostávala bežná javascriptová funkcia, robím to vo svojich shell skriptov node.js:

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

Všimnite si, že prvý arg je zvyčajne cesta k nodejs a druhý arg je umiestnenie skriptu, ktorý spúšťate.

Komentáre (12)

Optimista (uzol-optimista)

Pozrite sa na optimist library, je to oveľa lepšie ako ručné analyzovanie možností príkazového riadku.

Aktualizácia

Optimist je zastaraný. Skúste yargs, čo je aktívna odnož optimistu.

Komentáre (4)