nodeJs中的spawn错误

时间:2014-03-31 06:58:48

标签: node.js spawn

尝试使用exec

执行以下命令时

java -cp %SIKULI_HOME%\sikuli-script.jar org.python.util.jython E:\automation.sikuli\automation.py "a,b,c" 

我收到以下错误

var exec = require('child_process').execFile;

postreq.params将值打印为a,b,c.i想要通过\ automation.py" a,b,c" 我知道如何通过一个以下

 exec('java -cp %SIKULI_HOME%\sikuli-script.jar org.python.util.jython E:\automation.sikuli\automation.py postreq.params', function (err, data) {
    console.log(err);
    console.log(data);
    console.log("Sikuli execution started")
    //  res.end(data);
  });

错误

{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }

以下命令使用cmd

正常工作
java -cp %SIKULI_HOME%\sikuli-script.jar org.python.util.jython E:\automation.sikuli\automation.py "a,b,c"

2 个答案:

答案 0 :(得分:1)

您解释问题的方式,postreq.params似乎是一个JavaScript变量。如果是这样,那就是你应该执行的操作:

var exec = require("child_process").exec;
exec('java -cp %SIKULI_HOME%\sikuli-script.jar org.python.util.jython E:\automation.sikuli\automation.py "' +  postreq.params + '"', function (err, data) {

我不是Windows的人,所以我不肯定%SIKULI_HOME%会像你想要的那样扩展。如果没有,那么在评论中使用像凤凰城那样的process.env.HOMEPATH应该可以解决问题:

exec('java -cp ' + proces.env.HOMEPATH + '\sikuli-script.jar org.python.util.jython E:\automation.sikuli\automation.py "' +  postreq.params + '"', function (err, data) {

答案 1 :(得分:0)

execFile的第一个参数是要运行的文件。您正在传递一整套参数。试试这个:

exec('java',  ['-cp', '%SIKULI_HOME%\sikuli-script.jar',
    'org.python.util.jython', 'E:\automation.sikuli\automation.py',
    'postreq.params'], function (err, data) {

我不确定它是否会扩展%SIKULI_HOME%因为我不熟悉Windows。