2017-07-03 235 views
0

我在CentOS 7服務器(http://serverip:3000/)上運行一個簡單的夢魘應用程序,它永遠運行,儘管它通過一個簡單的res.send('hello world')傳遞,但沒有結果返回。Nightmarejs永遠運行?

我正在使用節點6.11。相同的代碼在本地PC上運行得很好。

const express = require('express') 
    const app = express() 

    app.get('/', function (req, res) { 
    //res.send('hello world'); => works fine for port 3000 
     var Nightmare = require('nightmare');  
    var nightmare = Nightmare({ show: false }); 

    nightmare 
     .goto('https://www.google.com') 
     .wait('#searchform') 
     .evaluate(function() { 
     return (document.body.innerHTML); 
     }) 
     .end() 
     .then(function (result) { 
     console.log(result); 
     }) 
     .catch(function (error) { 
     console.error('Search failed:', error); 
     }); 
    }) 

    app.listen(3000, function() { 
     console.log('Example app listening on port 3000!') 
    }) 
+0

是否可以從您的CentOS服務器訪問google.com?代碼對我看起來很好。要麼它應該超時默認(30秒)或應該顯示一些錯誤。 – devilpreet

+0

在Linux上運行無頭惡夢似乎有些問題。谷歌投訴很多,但很難得到它的工作。 –

+0

您是否試過在沒有'Express'的情況下直接運行? –

回答

1

首先,電子有你需要在服務器上單獨安裝靜態庫的依賴關係。

此外,您需要使用XVFB運行節點服務器,因爲它沒有顯示。 (https://www.x.org/archive/X11R7.6/doc/man/man1/Xvfb.1.xhtml

該命令最終會看起來像這樣。 $ xvfb-run node <your-server>.js

我安裝在Ubuntu的一切,像這樣:

apt-get install -y libgtk2.0-0 libnotify-bin libgconf-2-4 libnss3 libxss1 
x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic 
x11-apps clang libdbus-1-dev libgtk2.0-dev libnotify-dev libgnome-keyring- 
dev libgconf2-dev libasound2-dev libcap-dev libcups2-dev libxtst-dev libxss1 
libnss3-dev xvfb 

你需要做的CentOS等效。

單獨運行電子以進一步調試$ <your-project-directory>/node_modules/electron/dist/electron