Tôi đã thành công với Phantomjs để làm việc trên Heroku nhưng giờ tôi đang gặp sự cố với giao diện nút phantomjs cho node.js (xem https://github.com/sgentle/phantomjs-node).Gặp sự cố khi chạy nút Phantomjs + trên Heroku
Khi tôi đang cố gắng để khởi Phantom tôi nhìn thấy một sự chậm trễ 10-15 giây và sau đó:
> phantom stdout: ReferenceError: Can't find variable: socket
phantom stdout: phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
phantomjs://webpage.evaluate():1
Bạn có thể tạo lại vấn đề với các bước sau hoặc bằng cách kéo xuống ứng dụng thử nghiệm của tôi tại 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
thử nghiệm ứng dụng của bạn đã đưa ra, thứ ba đến dòng cuối cùng sẽ cho bạn biết địa chỉ URL, nó nên đọc như:
http://fathomless-ravine-5563.herokuapp.com deployed to Heroku
Nếu thành công bạn sẽ thấy Hello World! trong trình duyệt của bạn.
Bây giờ từ thư mục tương tự như ứng dụng của bạn chạy Heroku:
heroku run node
Tại dấu nhắc nút thử như sau:
phantom = require('phantom');
x = phantom.create();
Chờ 10-15 giây và bạn sẽ thấy lỗi. Không có gì hoạt động từ thời điểm này.
này nên đầu ra tập tin 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()}); }); }); });
Để xác nhận Phantomjs đang làm việc tốt trên Heroku, hãy thử những điều sau đây sử dụng dự án thử nghiệm của tôi:
>heroku run bash
Running `bash` attached to terminal... up, run.1
~ $ phantomjs test.js http://bbcnews.com foo.png
~ $ ls *.png
foo.png
tôi không thể tái tạo bất kỳ những vấn đề này tại địa phương nhưng có những vấn đề khác được báo cáo, nơi mọi người có thể đã gặp vấn đề này cục bộ.
Vấn đề dường như bắt nguồn từ shim.js
dòng 1637:
s.on('request', function(req) {
var evil;
evil = "function(){socket.emit('message', " + (JSON.stringify(JSON.stringify(req))) + " + '\\n');}";
return controlPage.evaluate(evil);
});
Tôi đã thử các biến thể của phiên bản của nút, phantom vv không có may mắn.
Tôi cũng đã thử một tệp xây dựng tùy chỉnh đặt biến DYLD, xem http://github.com/tecnh/heroku-buildpack-nodejs mà không có may mắn.
Bất cứ ai đã có Phantom + Node chơi cùng nhau độc đáo trên Heroku, vui lòng cho tôi biết. Có một số tham chiếu đến điều này trên Stackoverflow nhưng không ai nói "Tôi đã nhận nó để làm việc, đây là cách".
Bạn đã bao giờ tìm thấy câu trả lời cho điều này? Tôi cũng đang cố gắng để có được các ảo ảnh và nút nhạc chơi tốt trên heroku: http://goo.gl/oIhPU –
bạn có biên dịch ảo cho Heroku không? –
Heroku dường như đề xuất gói xây dựng này cho các ứng dụng phantom.js: https://github.com/stomita/heroku-buildpack-phantomjs - nó cũng được cập nhật gần đây hơn so với bạn tham khảo. Bạn đã thử chưa? – friism