7

「HerokuでPhantomJSを実行するは、ノードアプリを使用しようとしているため、関連しているが少し異なる質問であることに気付きました。

node アプリ用の casperJS (phantomJS に基づく) スクリプトのデプロイに問題があります。アプリのディレクトリに PhantomJS 64 ビット バイナリを配置して Heroku にデプロイしようとしましたが、PhantomJS/binを実行しようとすると次のエラーが発生します。

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 のベータ テストにサインアップしましたが、この時点ではドキュメントはまだかなり限られています。

編集: PhantomJS の lib フォルダーをノード アプリのルート ディレクトリにコピーするだけで、機能させることができました。

4

1 に答える 1

3

phantomjs の lib フォルダーをノード アプリのルート ディレクトリにコピーします。bin または sbin にシンボリック リンクを配置することもできます。重要なのは、ノードが実行されているのと同じアカウントを使用してターミナルから実行する必要があることです。また、node-phantom は、phantomjs が機能するようになると、それを利用するための優れた npm ライブラリです。

于 2012-09-18T17:28:04.033 に答える