5

我知道问题的标题看起来很模糊!但仅此而已。

我在生产服务器上安装了nodejs,它的phantomjs工作正常,然后我通过安装了nightmare npm install nightmare,我可以在node_modules中看到它,我尝试了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)
  })

什么也没发生,脚本没有输出任何东西,我将脚本简化为一个简单的 goto,对于我服务器上的一个页面,当我通过运行脚本时,该页面从未被调用node file.js

我有 CentOS 6.7,phantomjs 1.1 我还在使用最新版本的 phantomjs 的全新 CentOS 7 安装上对其进行了测试,同样的事情。

我是否缺少某种先决条件或其他东西?我如何调试问题,因为node script.js没有给出任何输出

更新:显然问题是,电子,它被噩梦'而不是phantomjs'使用需要一个图形环境,这就是它无法在我的环境中运行的原因。

4

3 回答 3

8

新版本的 Nightmare 需要electron,而不是 PhantomsJs。确保electron命令在您的 $PATH 变量中。

安装电子

npm i -g electron-prebuilt

调试:

DEBUG=nightmare* node script.js

于 2016-04-19T13:09:11.663 回答
2

看看这个 Dockerfile:https ://github.com/aheuermann/docker-electron/blob/master/7/Dockerfile

这是您需要的最小库。并开始你的脚本:

Xvfb -ac -screen scrn 1280x2000x24 :9.0 &
export DISPLAY=:9.0
DEBUG=* node src/index.js

基于电子的应用程序不应再崩溃

于 2017-01-16T16:40:40.517 回答
1

您也可以尝试electron在后台设置而不实际显示任何 GUI。您检查这是否有效:

var nightmare = Nightmare({ show: false});
于 2017-01-18T12:38:33.283 回答