2012-04-10 11 views
7

Ich realisiere "Running PhantomJS on Heroku" ist eine verwandte, aber etwas andere Frage, wie ich versuche, eine Knoten-App zu verwenden.phantomJS in der node.js App bereitstellen?

Ich habe Probleme bei der Bereitstellung eines casperJS (basierend auf phantomJS) Skript für eine Knoten-App. Ich habe zu Heroku versuchte die Bereitstellung von den PhantomJS Platzierung 64-Bit-Binär-Dateien in meiner App /bin Verzeichnis, aber ich bekomme die folgende Fehlermeldung, wenn ich versuche PhantomJS auszuführen:

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

Von dem, was ich gelesen habe das sein kann gelöst durch die Installation der QtWebKit-Bibliothek, aber Heroku hat dies nicht installiert. Gibt es einen anderen Hosting-Provider, den ich nutzen könnte, oder eine Möglichkeit, dieses Paket auf Heroku zu installieren?

Relevante Code:

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); 
    } 
    }); 
}); 

Ich habe für Beta-Tests auf Nodester haben unterschrieben, aber ihre Dokumentation wird an dieser Stelle noch recht begrenzt.

EDIT: Ich konnte es funktionieren, indem Sie einfach den lib-Ordner von PhantomJS in das Stammverzeichnis meiner Knoten-App kopieren.

Antwort

3

Kopieren Sie den Ordner lib PhantomJS in das Stammverzeichnis Ihres Knotens App Sie auch einen sym-Link in ist oder sbin setzen Der Schlüssel das ist, ist versuchen könnten hat vom Terminal mit demselben Konto ausgeführt werden, dass der Knoten läuft auf . Auch Knoten-Phantom ist eine gute NPM-Bibliothek Phantomjs zu verwenden, sobald Sie es funktioniert.