2013-12-16 29 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

感謝您的幫助喬我發現問題,這是一個路徑問題。 – TankofVines

相關問題