如何在节点js中的exec中传递多个参数

时间:2017-07-20 02:22:52

标签: javascript r node.js exec child-process

我使用exec库从节点js express调用R-script。以下是我的代码:

var exec = require("child_process").exec;

var param1 = some url;
var param2 = "hello";
var param3 = "world"
exec('Rscript pathtoscript/myScript.R"+" "+param1+" "+param2 , function(error, stdout, stderr) {
        if (error) {
            console.log(error);
            res.send(error);
        }
        else if (stderr) {
            console.log(stderr);
            res.send(stderr);
        }
        else if (stdout) {
            console.log("RAN SUCCESSFULLY");
            res.json(stdout);
        }
    });

在上面的代码中,如果我只传递param2和param3,则r脚本能够识别它。但是当我传递url时,只有url的某些部分被识别为URL而休息不是(可能是它的长)。请建议。感谢

1 个答案:

答案 0 :(得分:0)

这不是一个确切的答案,但我希望它有助于调试问题;

我在这里尝试的是双引号param1,并将命令与exec分开以使其更容易阅读。

祝你好运。

var exec = require("child_process").exec;

var param1 = "\"http:\\something\"";
var param2 = "hello";
var param3 = "world"
var command = "Rscript pathtoscript/myScript.R "+ param1 + " " + param2 + " " + param3;

exec(command, function(error, stdout, stderr) {
        if (error) {
            console.log(error);
            res.send(error);
        }
        else if (stderr) {
            console.log(stderr);
            res.send(stderr);
        }
        else if (stdout) {
            console.log("RAN SUCCESSFULLY");
            res.json(stdout);
        }
    });