[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
옵션, 조치 및 인수를 정의하는 데 효과적입니다. 또한 도움말 페이지를 생성합니다.
즉시
콜백 방식이 마음에 들면 사용자의 입력을받는 데 효과적입니다.
공동 프롬프트
생성기 방식이 마음에 들면 사용자의 입력을받는 데 효과적입니다.