cyntwin下的phantomjs子进程执行

时间:2015-11-05 16:17:24

标签: cygwin phantomjs casperjs

我试图在cygwin环境下从casperjs脚本调用shell脚本。如果我使用" ls,pwd,find ..."等系统命令,则下面的代码打印输出。但是当我在execFile函数中指定custom.sh脚本时,它什么都不打印。看起来execFile并没有触发shell脚本。

var casper = require('casper').create({   
    verbose: true, 
    logLevel: 'debug',
});
var cp = require('child_process');

casper.start();

casper.then(function(){  
    cp.execFile('custom.sh', 'arg', {}, function (err, stdout, stderr) {    
            console.log("execFileSTDOUT:", JSON.stringify(stdout));
            console.log("execFileSTDERR:", JSON.stringify(stderr));
    });

    casper.waitFor(function check () {
        return false;
    }, function then() {
        console.log('Success').exit();
    }, function timeout() {
        this.echo("Timeout!!!").exit();
    }, 3000)
});

casper.run();

custom.sh:

#!/bin/sh
echo >&2 some message
echo "code";
echo "xxx" > trigger.log 
如果我直接从命令行运行它,

custom.sh会打印输出:

$ custom.sh
some message
code

但是casper日志中没有任何内容:

$ casperjs test.js
[info] [phantom] Starting...
[info] [phantom] Running suite: 1 step
[debug] [phantom] Successfully injected Casper client-side utilities
execFileSTDOUT: ""
execFileSTDERR: ""
[info] [phantom] Step anonymous 1/1: done in 38ms.
[info] [phantom] Step _step 2/2: done in 50ms.

我尝试将custom.sh放在/ usr / bin中并指定绝对路径但没有成功。

修改

有一点需要提及 cp.execFile(' / usr / bin / ls',' /' - 什么都不返回 cp.execFile(' ls',' /' - 输出文件列表

1 个答案:

答案 0 :(得分:0)

似乎问题与cygwin路径参数有关。

最后,下面的函数调用按预期工作:

cp.execFile('sh', 'custom.sh' ...