2016-04-19 120 views
3

我知道這個問題的標題看起來很模糊!但這就是它。夢魘JS不工作

我安裝我的生產服務器,其中有phantomjs正常工作,然後我通過npm install nightmare安裝的噩夢,我可以看到它在node_modules上的NodeJS,我試圖通過開發GitHub上列出的例子:

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({ show: true }) 

nightmare 
    .goto('http://yahoo.com') 
    .type('input[title="Search"]', 'github nightmare') 
    .click('#uh-search-button') 
    .wait('#main') 
    .evaluate(function() { 
    return document.querySelector('#main .searchCenterMiddle li a').href 
    }) 
    .end() 
    .then(function (result) { 
    console.log(result) 
    }) 

沒有任何事情發生,腳本沒有輸出任何東西,我簡化了腳本到一個簡單的單個轉到,我的服務器上的頁面,當我通過腳本運行時從未調用頁面node file.js

我有CentOS 6.7,phantomjs 1.1我也在新的CentOS上測試過它7安裝與最新版本的phantomjs,同樣的事情。

我是否缺少某種先決條件?如何調試的問題,因爲node script.js不給任何輸出

更新:顯然,問題是,電子,用於通過噩夢「而不是phantomjs的」需要一個圖形環境,這就是爲什麼它不能運行我的環境。

回答

4

新版本的夢魘需要electron,而不是PhantomsJs。確保electron命令在您的$ PATH變量中。

安裝電子

npm i -g electron-prebuilt

要調試:

DEBUG=nightmare* node script.js

+0

謝謝你,我還以爲你的答案後,起初它,COS顯然本來應該的原因,我在全球安裝了電子預建的,我遇到了一些依賴錯誤,當我我試圖運行電子,我安裝了所需的庫,但噩夢仍然無法正常工作,我試過'NODE_DEBUG =噩夢節點script.js'仍然沒有輸出 同樣運行'電子'也不給我任何輸出,I嘗試'電子--help',不知道它是否接受這個參數,但無論如何不輸出 –

+1

嘗試'DEBUG = nightmare * node script.js',看起來像庫使用'debug'模塊,而不是內置的調試日誌 – hassansin

+0

謝謝,那顯示了錯誤,也許我已經得到了一些東西g,我是否需要有一個GUI環境才能運行?它需要X11運行嗎?因爲它需要的一個庫屬於X11我認爲'libgtk-x11',我得到錯誤:'電子子進程退出代碼1:一般錯誤 - 您可能需要xvfb'。 –

0

您也可以嘗試設置electron在後臺實際上不顯示任何GUI。你檢查一下,如果這個工程:

var nightmare = Nightmare({ show: false}); 
+0

你嘗試過嗎? – Tebe