Logré que Phantomjs funcione correctamente en Heroku, pero ahora estoy solucionando problemas con la interfaz phantomjs-node para node.js (ver https://github.com/sgentle/phantomjs-node).Problemas para ejecutar el nodo Phantomjs + en Heroku
cuando estoy intentar inicializar fantasma que estoy viendo un segundo retardo 10-15 y luego:
> phantom stdout: ReferenceError: Can't find variable: socket
phantom stdout: phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
Puede reproducir el problema con los siguientes pasos o tirando hacia abajo de mi aplicación de prueba en https://github.com/matellis/phantom-test
git init phantom-test
cd phantom-test
heroku apps:create
# create node app as per Heroku instructions here https://devcenter.heroku.com/articles/nodejs
# copy bin and lib folders from http://phantomjs.googlecode.com/files/phantomjs-1.6.1-linux-x86_64-dynamic.tar.bz2 into root of your new project
# if you don't do this step you'll get an error "phantom stderr: execvp(): No such file or directory"
git add .
git commit -m "init"
git push heroku
Prueba de su aplicación ha llegado, la tercera a la última línea le dirá la URL, se debe leer como:
http://fathomless-ravine-5563.herokuapp.com deployed to Heroku
¡Si tiene éxito, debería ver Hello World! en tu navegador.
Y desde la misma carpeta que la aplicación se ejecute Heroku:
heroku run node
En el símbolo del nodo intente lo siguiente:
phantom = require('phantom');
x = phantom.create();
esperar 10-15 segundos y debería ver el error. Nada funciona a partir de este momento.
Esto debería archivo de salida foo.png
:
x = phantom.create(function(ph){ph.createPage(function(page){ page.open('http://bbcnews.com', function(status){ page.render('foo.png', function(result) {ph.exit()}); }); }); });
Para validar PhantomJS está trabajando muy bien en Heroku, intente lo siguiente usando mi proyecto de prueba:
>heroku run bash
Running `bash` attached to terminal... up, run.1
~ $ phantomjs test.js http://bbcnews.com foo.png
~ $ ls *.png
foo.png
no puede reproducir cualquiera de estos problemas a nivel local, pero hay otros problemas reportados donde las personas pueden haber tocado este problema localmente.
El problema parece originarse en línea shim.js
1637:
s.on('request', function(req) {
var evil;
evil = "function(){socket.emit('message', " + (JSON.stringify(JSON.stringify(req))) + " + '\\n');}";
return controlPage.evaluate(evil);
});
He intentado variaciones de versiones de nodo, fantasma, por ejemplo, pero sin suerte.
También probé un buildpack personalizado que establece la variable DYLD, ver http://github.com/tecnh/heroku-buildpack-nodejs sin tener suerte.
Cualquiera que tenga Phantom + Node jugando muy bien en Heroku, por favor avíseme. Hay varias referencias a esto en Stackoverflow pero nadie dice "Lo tengo para trabajar, así es como".
¿Alguna vez encontrar una respuesta a esto? También estoy intentando hacer que phantomjs y nodejs jueguen bien en heroku: http://goo.gl/oIhPU –
¿has compilado phantomjs para Heroku? –
Heroku parece recomendar este paquete de construcción para las aplicaciones phantom.js: https://github.com/stomita/heroku-buildpack-phantomjs; también se actualizó más recientemente que la referencia de usted. ¿Lo has probado? – friism