我使用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而休息不是(可能是它的长)。请建议。感谢
答案 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);
}
});