我已經成功將Phantomjs用於Heroku,但現在我遇到了node.js的phantomjs-node接口問題(請參閱https://github.com/sgentle/phantomjs-node)。在Heroku上運行Phantomjs +節點時遇到問題
當我試圖初始化幻影我看到一個10-15秒的延遲,然後:
> phantom stdout: ReferenceError: Can't find variable: socket
phantom stdout: phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
您可以通過以下步驟或在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
測試您的應用程序已經啓動時,第三至最後一行將告訴你的URL,它應該象:
http://fathomless-ravine-5563.herokuapp.com deployed to Heroku
如果成功,您應該看到Hello World!在你的瀏覽器中。
同一文件夾作爲您的Heroku應用程序運行現在:
heroku run node
在節點提示請嘗試以下操作:
phantom = require('phantom');
x = phantom.create();
等待10-15秒,你應該看到的錯誤。從這一點來說什麼都不起作用。
這應該輸出文件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()}); }); }); });
爲了驗證Phantomjs是在Heroku上工作正常,請嘗試使用我的測試項目如下:
>heroku run bash
Running `bash` attached to terminal... up, run.1
~ $ phantomjs test.js http://bbcnews.com foo.png
~ $ ls *.png
foo.png
我無法重現這些問題的任何地方,但還有其他一些問題可以在當地人遇到這個問題。
這個問題似乎在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);
});
我試過節點,幻影等,沒有運氣的版本變化。
我也嘗試過設置DYLD變量的自定義buildpack,請參閱http://github.com/tecnh/heroku-buildpack-nodejs也沒有運氣。
任何人都有幻影+節點在Heroku上很好地一起玩,請讓我知道。在Stackoverflow上有幾處對此的引用,但沒有人說「我得到它的工作,這是如何」。
你有沒有找到一個答案?我也試圖讓phantomjs和nodejs在heroku上玩得很好:http://goo.gl/oIhPU –
你有爲Heroku編譯過的phantomjs嗎? –
Heroku似乎推薦phantom.js應用程序的這個buildpack:https://github.com/stomita/heroku-buildpack-phantomjs - 它也比最近更新更多的參考。你試過了嗎? – friism