2012-04-10 124 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,一旦你得到它的工作。