7

我意识到“在 Heroku 上运行 PhantomJS”是一个相关但略有不同的问题,因为我正在尝试使用节点应用程序。

我在为节点应用程序部署 casperJS(基于 phantomJS)脚本时遇到问题。我尝试通过将 PhantomJS 64 位二进制文​​件放在我的应用程序/bin目录中来部署到 Heroku,但是当我尝试运行 PhantomJS 时出现以下错误:

phantomjs: error while loading shared libraries: libQtWebKit.so.4: cannot open shared object file: No such file or directory

根据我的阅读,这可以通过安装 QtWebKit 库来解决,但 Heroku 没有安装这个。是否有另一个我可以使用的托管服务提供商或者在 Heroku 上安装这个包的方法?

相关代码:

app.get('/', function(request, response) {
  var sys = require('sys')
  var exec = require('child_process').exec;
  var child;

  //works but gives error while loading shared library libqtwebkit.so.4
  child = exec("phantomjs --version | tr -d '\n'", function(error, stdout, stderr) {
    sys.print('stdout: ' + stdout);
    sys.print('stderr: ' + stderr + '\n');
    response.header('Content-Type', 'application/json');
    response.send('_testcb(stdout:' + stdout + '\nstderr:' + stderr + ')', 200);
    if(error !== null) {
      console.log('exec error: ' + error);
    }
  });
});

我已经在 Nodester 上注册了 beta 测试,但他们的文档在这一点上仍然非常有限。

编辑:我可以通过简单地将 PhantomJS 的 lib 文件夹复制到我的节点应用程序的根目录来使其工作。

4

1 回答 1

3

将 phantomjs 的 lib 文件夹复制到节点应用程序的根目录您也可以尝试将符号链接放入 bin 或 sbin 关键是必须使用与节点运行相同的帐户从终端运行。此外,node-phantom 是一个很好的使用 phantomjs 的 npm 库,一旦你开始工作。

于 2012-09-18T17:28:04.033 回答