2643 votes

Comment passer des arguments de ligne de commande pour Node.js?

C'est probablement juste un JavaScript question. J'ai un serveur web écrit en Node.js que je voudrais lancer avec un dossier spécifique. Je ne suis pas sûr de la façon d'accéder à des arguments en JavaScript. Je suis nœud en cours d'exécution comme ceci

$ node server.js folder

server.js est mon code. Node.js aider dit que c'est possible:

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

Comment pourrais-je accéder à ces arguments en JavaScript? De toute façon je n'était pas en mesure de trouver cette information sur le web.

3274voto

MooGoo Points 11094

Méthode Standard (pas de bibliothèque)

Les arguments sont stockés dans process.argv

Voici le formulaire de spécifications http://nodejs.org/docs/latest/api/process.html#process_process_argv

process.argv est un tableau contenant les arguments de ligne de commande. Le premier élément est "nœud", le second élément sera le nom du fichier JavaScript. La prochaine éléments supplémentaires arguments de ligne de commande.

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

Cela va générer:

$ 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

762voto

Mauvis Ledford Points 12424

Pour normaliser les arguments d'une fonction javascript devait recevoir, je le fais dans mes node.js les scripts shell:

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

Notez que le premier argument est généralement le chemin d'accès à nodejs, et le deuxième argument est l'emplacement du script que vous êtes en cours d'exécution.

Edit: Psst, à l'aide de "Mode Strict" en JavaScript? Vous aurez envie de le faire:

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

421voto

real_ate Points 581

Le up-to-date de droit de réponse pour ce qu'il à utiliser la minimist de la bibliothèque. Nous avons l'habitude d'utiliser un nœud-optimiste, mais il a depuis été abandonné.

Voici un exemple de comment l'utiliser pris directement à partir de la minimist de la documentation:

var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);

-

$ node example/parse.js -a beep -b boop
{ _: [], a: 'beep', b: 'boop' }

-

$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
{ _: [ 'foo', 'bar', 'baz' ],
  x: 3,
  y: 4,
  n: 5,
  a: true,
  b: true,
  c: true,
  beep: 'boop' }

127voto

gor Points 6313

Optimist (nœud-optimist)

Découvrez optimiste de la bibliothèque, il est beaucoup mieux que l'analyse options de ligne de commande à la main.

84voto

balupton Points 17805

Commander.js

Fonctionne très bien pour définir vos options, d'actions et d'arguments. Il génère également les pages d'aide de vous.

Rapidement

Fonctionne très bien pour obtenir une saisie de l'utilisateur, si vous aimez le rappel de l'approche.

Co-Invite

Fonctionne très bien pour obtenir une saisie de l'utilisateur, si vous aimez le générateur d'approche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X