【问题标题】:How to access command line arguments in a node.js child process using child_process.exec?如何使用 child_process.exec 访问 node.js 子进程中的命令行参数?
【发布时间】:2013-12-16 22:44:26
【问题描述】:

我正在尝试在 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 执行时获得与我从终端执行时相同的行为有什么建议吗?

【问题讨论】:

    标签: node.js


    【解决方案1】:

    您的问题在其他地方。 (警告:节点 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"]
    

    【讨论】:

    • 感谢乔的帮助,我发现了问题,这是路径问题。
    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多