2013-12-16 4 views
4

인수를 사용하여 명령 줄을 통해 실행되는 다른 node.js 스크립트에 대해 node.js에 테스트 스크립트를 작성하려고합니다. 스크립트가 터미널에서 실행될 때 인수는 process.argv [2], process.argv [3] 등을 사용하여 액세스 할 수 있습니다. 그러나 child_process.exec를 사용하여 테스트 스크립트에서 스크립트를 실행하면 인수가 없습니다).child_process.exec를 사용하여 node.js 하위 프로세스에서 명령 줄 인수에 액세스하는 방법?

target.js

var arguments = { 
    arg1: process.argv[2], 
    arg2: process.argv[3] 
}; 

console.log(arguments.arg1); 
// This outputs '100' when target.js is executed from terminal 

test.js

var cp = require('child_process'); 

cp.exec('node target.js 100 200', 
    function (err, stdout, stderr) { 
     if (err) { 
      console.log(err); 
     } 

     console.log(stdout); 
     // process.argv[2] is undefined when executed as a child process 
}); 

내가 터미널에서 실행할 때 내가 할로 child_process를 통해 실행하는 동일한 동작을하는 방법에 대한 어떤 제안이?

답변

2

문제는 다른 곳에서 발생합니다. (경고 : 노드 0.6.12)

나는 a.js으로 이것을 사용하여 테스트를 실행 :

console.log(JSON.stringify(process.argv)); 

그리고 아래 발사기를 사용하여 :

:

var cp = require('child_process'); 

cp.exec('node a.js 100 200', 
function (err, stdout, stderr) { 
    if (err) { 
     console.log(err); 
    } 

    console.log(stdout); 
}); 

나는 동일한 예상 출력을 얻을

[email protected]:~/src$ node a.js 100 200 
["node","/home/joe/src/a.js","100","200"] 
[email protected]:~/src$ node b.js 
["node","/home/joe/src/a.js","100","200"] 
+1

도움 주셔서 감사합니다. Joe 문제를 발견했으며 경로 문제였습니다. – TankofVines

관련 문제