2016-05-13 10 views
5

Po uruchomieniu programu z węzła:Sprawdzenie czy ARGV jest podana podczas uruchamiania programu z węzła

node test.js 

Jak można sprawdzić, czy program nadawany jest ARGV podczas uruchamiania node test.js --example? Co próbowałem tak daleko jest następujące:

function say(input){ 
    console.log(input); 
} 

if(process.argv[1] !== '') 
{ 
    say('false'); 
} 
else { 
    say('success'); 
} 

if(process.argv[1] === null) 
{ 
    say('false'); 
} 
else { 
    say('success'); 
} 

Jednak pierwsze rozwiązanie nie będzie wyjście else i drugie rozwiązanie wyłącznie wyjście NUL is not defined więc z tym, co mam na myśli czy robię jakiś błąd w moim kodowaniu?

+0

'NUL nie jest zdefiniowany' – maioman

+0

@maioman Czy" NUL "to tylko sposób na powiedzenie, że tam nie ma? – 13aal

+0

try '(process.argv [1] === undefined)', 'NUL' nie jest predefiniowane w js – maioman

Odpowiedz

4
  • argv [0] to nazwa węzła inerpretor -> w ogólnym węzła
  • argv [1] jest ścieżką do skryptu. Więc argv [1] jest zawsze wypełniona

spróbować to być bardzo dobrze zdaje sobie sprawę:

console.log(process.argv); 
-2

Zobacz także minimist here.

var argv = require('minimist')(process.argv.slice(2)); 
console.dir(argv); 
console.log(argv.example); 
+0

Nie ma potrzeby dołączania całej biblioteki do prostego sprawdzenia. –

2

Dzięki odpowiedzi udzielonej przez Kevin ternet, a dla informacji dostarczonych przez maioman co skończyło się robi to w ten sposób:

if(process.argv[2] === undefined){ 
    say('false'); 
} else { 
    say('true'); 
} 

Oto co się dzieje, gdy proces ARGV w Gałąź:

ARGV[0]:

if(process.argv[0] === undefined){ 
    console.log('Failure'); 
    console.log(process.argv[0]); 

} else { 
    console.log('Success'); 
    console.log(process.argv[0]); 
} 

wyjściowa:

Success 
C:\Program Files\nodejs\node.exe //Path to node executable 

ARGV[1]:

if(process.argv[1] === undefined){ 
    console.log('Failure'); 
    console.log(process.argv[1]); 

} else { 
    console.log('Success'); 
    console.log(process.argv[1]); 
} 

wyjściowa:

Success 
C:\Users\bin\javascript\node\test.js //Path to file 

ARGV[2]:

if(process.argv[2] === undefined){ 
    console.log('Failure'); 
    console.log(process.argv[1]); 

} else { 
    console.log('Success'); 
    console.log(process.argv[2]); 
} 

wyjściowa:

Success 
--example //The actual flag that was given 

Tak więc, aby sprawdzić, czy flaga jest faktycznie podana szukać ARGV[2].

Oto przykład całego ARGV drzewa RAN:

if(process.argv === undefined){ 
    console.log('Failure'); 
    console.log(process.argv); 

} else { 
    console.log('Success'); 
    console.log(process.argv); 
} 

Success 
[ 'C:\\Program Files\\nodejs\\node.exe' //ARGV[0], 
    'C:\\Users\\bin\\javascript\\node\\test.js' //ARGV[1], 
    '--example' //ARGV[2] ] 

więc zapytać widać drzewo jest skonstruowany jako tablicę z pierwszym argumentem jest 0.

Powiązane problemy