我有一个PhantomJS/CasperJS脚本,我正在使用node.js脚本运行process.spawn().由于CasperJS不支持require()模块,我试图从CasperJS打印命令stdout,然后从我的node.js脚本中读取它们spawn.stdout.on('data', function(data) {});,以便执行诸如将对象添加到redis/mongoose之类的事情(复杂,是的,但似乎比为此设置Web服务更简单...)CasperJS脚本执行一系列命令,并创建20个需要添加到我的数据库的屏幕截图.
但是,我无法弄清楚如何将data变量(a Buffer?)分解为行...我已经尝试将其转换为字符串然后进行替换,我已经尝试过spawn.stdout.setEncoding('utf8');但似乎没有任何工作......
这就是我现在所拥有的
var spawn = require('child_process').spawn;
var bin = "casperjs"
//googlelinks.js is the example given at http://casperjs.org/#quickstart
var args = ['scripts/googlelinks.js'];
var cspr = spawn(bin, args);
//cspr.stdout.setEncoding('utf8');
cspr.stdout.on('data', function (data) {
var buff = new Buffer(data);
console.log("foo: " + buff.toString('utf8'));
});
cspr.stderr.on('data', function (data) {
data += '';
console.log(data.replace("\n", "\nstderr: "));
});
cspr.on('exit', function (code) {
console.log('child process exited with code ' + …Run Code Online (Sandbox Code Playgroud) 我尝试了以下代码,它显示 res 未定义。我怎样才能返回标准输出?
function run_shell_command(command)
{
var res
exec(command, function(err,stdout,stderr){
if(err) {
console.log('shell error:'+stderr);
} else {
console.log('shell successful');
}
res = stdout
// console.log(stdout)
});
return res
}
Run Code Online (Sandbox Code Playgroud)