しばらくの間、node-phantom モジュールで nodejs を使用しました。うまくいきました。今、別のマシンで試してみましたが、同じコード例が機能しません:
var Scan=function(request,response)
{
var parsedURL=url.parse(request.url,true);
if(parsedURL.query.site)
{
console.log("scanning "+parsedURL.query.site);
phantom.create(function(err,ph) {
console.log(err);
return ph.createPage(function(err,page) {
console.log(err);
return page.open(parsedURL.query.site, function(err,status) {
console.log("opened site? ", status);
if (status=="fail") {
response.writeHead(404, {'Content-Type': 'text/plain'});
response.end('URL not found');
return;
}
var filename="temp.jpg';
console.log(filename);
page.render(filename,function(err){
if (err) {
console.log(err);
return;
}
page.close(function(){
response.writeHead(404, {'Content-Type': 'text/plain'});
response.end('URL not found');
});
});
console.log("opened site? ", status);
if (status=="fail") {
response.writeHead(404, {'Content-Type': 'text/plain'});
response.end('URL not found');
return;
}
var filename="temp.jpg';
console.log(filename);
page.render(filename,function(err){
if (err) {
console.log(err);
return;
}
page.close(function(){
response.writeHead(404, {'Content-Type': 'text/plain'});
response.end('URL not found');
});
});
});
});
});
}
}
createPage() コールバック内に入ることがなく、nodejs とphantomjs 間の通信が不足しているように見えます。nodejs バージョン: 0.10.10 ファントム js バージョン: 1.9.1
何が問題なのかを確認するにはどうすればよいですか?
UPD:新しい Debian ディストリビューションをインストールすると、コンソールに次の警告が表示されることがあります。
警告 - クライアントがハンドシェイクされていない クライアントは再接続する必要があります
socket.io の問題のようです。