2012-04-10 9 views
7

Me doy cuenta "Running PhantomJS on Heroku" es una pregunta relacionada pero ligeramente diferente ya que estoy tratando de usar una aplicación de nodo.¿Implementar phantomJS en la aplicación node.js?

Tengo problemas para implementar una secuencia de comandos casperJS (basada en phantomJS) para una aplicación de nodo. He intentado desplegar a Heroku colocando el PhantomJS binario de 64 bits en el directorio de mi aplicación /bin, pero me sale el siguiente error al intentar ejecutar PhantomJS:

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

Por lo que he leído esto puede ser resuelto instalando la biblioteca QtWebKit, pero Heroku no tiene esto instalado. ¿Hay otro proveedor de hosting que pueda usar que funcione o una forma de instalar este paquete en Heroku?

código relevante:

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

he firmado para pruebas beta en Nodester pero su documentación está siendo bastante limitada en este punto.

EDITAR: Pude hacerlo funcionar simplemente copiando la carpeta lib de PhantomJS en el directorio raíz de mi aplicación de nodo.

Respuesta

3

Copia la carpeta lib de PhantomJS al directorio raíz de la aplicación de nodo También puede intentar poner un enlace sym en el recipiente o sbin La clave es que se tiene que ejecutar desde el terminal utilizando la misma cuenta que el nodo se ejecuta en . Además, node-phantom es una buena biblioteca npm para utilizar phantomjs, una vez que lo haces funcionar.

Cuestiones relacionadas