我是NodeJs的新手。要从电子应用程序运行shellscript文件,我使用了nodejs中的child_process包。 当我们给exec绝对路径时,它工作正常。但是如果我们将绝对路径存储在某个变量中并将该变量传递给exec它会显示“没有这样的文件或目录”错误。
//In this case it works fine due to absolute path provided
const exec = require('child_process').exec;
var scriptFile = exec('sh --Here is absolutepath--/demoScript.sh');
scriptFile.stdout.on('data', function(data){
console.log(data);
});
scriptFile.stderr.on('data', function(data){
console.log(data);
});
但是如果我们创建绝对路径的var它会显示错误
const exec = require('child_process').exec;
const path = require("path");
var absolutePath = path.resolve('../.././demoScript.sh');
var scriptFile = exec('sh absolutePath');
scriptFile.stdout.on('data', function(data){
console.log(data);
});
scriptFile.stderr.on('data', function(data){
console.log(data);
});
答案 0 :(得分:0)
问题出在var scriptFile = exec('sh absolutePath');
exec
函数以string
为参数。因此,在您的情况下,它实际上是执行absolutePath
而不是tha absolutePath
的值。
试试这个,而不是
var toExec = 'sh ' + absolutePath;
var scriptFile = exec(toExec);
此外,如果这不起作用,则问题出在sh
。你不需要它,因为exec函数只会执行你提供的任何路径。