我在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!')
})
答案 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