PhantomJs:Spawn没有打开任何应用程序

时间:2016-04-20 10:58:19

标签: javascript node.js phantomjs

我在全球范围内使用npm安装了phantomJs。为什么这段代码不起作用?



var page  = require('webpage').create();
var spawn = require('child_process').spawn;

page.open('http://google.com', function(status){
  if( status == 'success' ) {
    page.render('/tmp/google-snapshot.jpg');
    spawn('/usr/bin/sensible-browser', 'file:///tmp/google-snapshot.jpg');
    phantom.exit();
  }
})




我正在使用linux mint。在终端中键入命令/usr/bin/sensible-browser file:///example.png工作正常,但为什么这不能通过脚本工作。?

1 个答案:

答案 0 :(得分:1)

事实证明,在spawn()可以完成之前调用了phantom.exit()。下面的代码修复了问题。

var page  = require('webpage').create();
var spawn = require('child_process').spawn;

page.open('http://google.com', function(status){
  if( status == 'success' ) {
    page.render('/tmp/google-snapshot.jpg');
    spawn('/usr/bin/sensible-browser', 'file:///tmp/google-snapshot.jpg');
  }
  setTimeout(function(){
    phantom.exit();
  },2000);
});

参考:https://github.com/ariya/phantomjs/pull/14220