Я использую библиотеку exec для вызова R-скрипта из узла js express. Ниже мой код:
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-адрес, а отдых не является (может быть, его длинным). Пожалуйста, предложите. Спасибо
Это не точный ответ, но я надеюсь, что это поможет отладить проблему;
То, что я пытался сделать здесь, это double quote 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);
}
});
console.log
ваш аргумент команды для методаexec
? Работает ли он из командной строки именно так, как печатается?