[javascript] Node.js 프로그램에 명령 행 인수를 어떻게 전달합니까?

Node.js로 작성된 웹 서버가 있으며 특정 폴더로 시작하고 싶습니다. JavaScript에서 인수에 액세스하는 방법을 잘 모르겠습니다. 다음과 같이 노드를 실행 중입니다.

$ node server.js folder

여기 server.js내 서버 코드가 있습니다. Node.js 도움말은 이것이 가능하다고 말합니다.

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

JavaScript에서 이러한 인수에 어떻게 액세스합니까? 어떻게 든 웹 에서이 정보를 찾을 수 없었습니다.



답변

표준 방법 (라이브러리 없음)

인수는 process.argv

다음은 명령 행 인수 처리에 대한 노드 문서입니다.

process.argv명령 행 인수를 포함하는 배열입니다. 첫 번째 요소는 ‘node’이고 두 번째 요소는 JavaScript 파일의 이름입니다. 다음 요소는 추가 명령 줄 인수입니다.

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

이것은 다음을 생성합니다 :

$ 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


답변

일반 자바 스크립트 함수가받는 것처럼 인수를 정규화하려면 node.js 쉘 스크립트 에서이 작업을 수행하십시오.

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

첫 번째 arg는 일반적으로 nodejs의 경로이고 두 번째 arg는 실행중인 스크립트의 위치입니다.


답변

업 – – 날짜 우측의 이을에 대한 대답은 사용하는 minimist의 라이브러리를. 우리는 node-optimist 를 사용 했지만 그 이후에는 더 이상 사용되지 않습니다.

다음은 미니멀리스트 문서에서 직접 사용하는 방법의 예입니다.

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' }


답변

2018 년은 야생의 현재 추세를 기반으로 답변합니다.


바닐라 자바 ​​스크립트 인수 파싱 :

const args = process.argv;
console.log(args);

이것은 다음을 반환합니다.

$ node server.js one two=three four
['node', '/home/server.js', 'one', 'two=three', 'four']

공식 문서


인수 구문 분석에 가장 많이 사용 된 NPM 패키지 :

Minimist : 최소한의 인수 분석.

Commander.js : 인수 구문 분석에 가장 많이 채택 된 모듈.

Meow : Commander.js에 대한 더 가벼운 대안

Yargs :보다 복잡한 인수 구문 분석 (무거운).

Vorpal.js : 인수 구문 분석 기능이있는 성숙하고 대화식 명령 줄 응용 프로그램입니다.


답변

낙관론자 (노드 낙관론자)

낙관론 라이브러리를 확인하십시오 . 명령 행 옵션을 수동으로 구문 분석하는 것보다 훨씬 좋습니다.

최신 정보

낙천주의는 더 이상 사용되지 않습니다. 낙관론의 적극적인 포크 야그 를 사용해보십시오 .


답변

여기에 몇 가지 훌륭한 답변이 있지만 모두 매우 복잡해 보입니다. 이것은 bash 스크립트가 인수 값에 액세스하는 방법과 매우 유사하며 MooGoo가 지적한 것처럼 이미 node.js에 표준으로 제공되었습니다. (node.js를 처음 접하는 사람이 이해할 수 있도록하기 위해)

예:

$ node yourscript.js banana monkey

var program_name = process.argv[0]; //value will be "node"
var script_path = process.argv[1]; //value will be "yourscript.js"
var first_value = process.argv[2]; //value will be "banana"
var second_value = process.argv[3]; //value will be "monkey"


답변

Commander.js

옵션, 조치 및 인수를 정의하는 데 효과적입니다. 또한 도움말 페이지를 생성합니다.

즉시

콜백 방식이 마음에 들면 사용자의 입력을받는 데 효과적입니다.

공동 프롬프트

생성기 방식이 마음에 들면 사용자의 입력을받는 데 효과적입니다.