2012-04-10 132 views
7

我意识到"Running PhantomJS on Heroku"是一个相关但略有不同的问题,因为我试图使用节点应用程序。将phantomJS部署到node.js应用程序?

我在为节点应用程序部署casperJS(基于phantomJS)脚本时遇到问题。我试着放置在我的应用程序的/bin目录PhantomJS 64位二进制文​​件部署到Heroku的,但我得到以下错误,当我尝试运行PhantomJS:

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

从我读过这可能是通过安装QtWebKit库解决,但Heroku没有安装。是否有另一个托管服务提供商可以使用,或者在Heroku上安装此软件包?

相关代码:

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

我已经注册了上Nodester beta测试,但他们的文档还是蛮在这一点上的限制。

编辑︰我能够通过简单地将PhantomJS的lib文件夹复制到我的节点应用程序的根目录来得到它的工作。

回答

3

复制phantomjs到您的节点应用 的根目录下,您也可以尝试把一个符号链接在垃圾桶或sbin目录 的lib文件夹,关键是有一个节点运行在同一个帐户从终端运行。 此外,节点幻像是一个很好的npm库,利用phantomjs,一旦你得到它的工作。