如何在节点js中的exec中传递多个参数
问题描述:
我正在使用exec库从节点js express调用R-script。以下是我的代码:如何在节点js中的exec中传递多个参数
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,其余的不是(可能是它的长度)。请建议。谢谢
答
这不是一个确切的答案,但我希望它有助于调试问题;
我在这里试图做的是双引号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);
}
});
您需要提供更多的上下文。什么是URL? URL [编码](https://www.w3schools.com/tags/ref_urlencode.asp)?你的R脚本的相关部分怎么样?有可能你的命令格式不正确。你有没有试过'console.log'命令参数到'exec'方法?它是否完全按照打印的命令行工作? –