Nightmarejs永远奔跑?

时间:2017-07-03 07:03:27

标签: node.js nightmare

我在CentOS 7服务器(http://serverip:3000/)上运行一个简单的Nightmare应用程序,它会永远运行,虽然它通过一个简单的res.send('hello world')传递但没有结果返回。

我正在使用Node 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!')
    })

1 个答案:

答案 0 :(得分:1)

首先,Electron具有您需要在服务器上单独安装的静态库依赖项。

此外,您需要使用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