我正在尝试在node.js中为另一个node.js脚本编写测试脚本,该脚本通过带参数的命令行执行。当在终端中执行脚本时,可以使用process.argv [2],process.argv [3]等访问参数。但是,当使用child_process.exec在测试脚本中执行脚本时,这些参数不存在( )。
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执行时获得相同行为的任何建议,就像我从终端执行时一样?
答案 0 :(得分: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);
});
我获得了相同的预期输出:
joe@toad:~/src$ node a.js 100 200
["node","/home/joe/src/a.js","100","200"]
joe@toad:~/src$ node b.js
["node","/home/joe/src/a.js","100","200"]