8

[DigitalOcean 経由] Ubuntu Linux 14.04 サーバーで nightmare.js を動作させることができないようです。

PhantomJS (1.9.8) と Node (4.2.4) をインストールしましたが、私が知る限り、うまく機能しています。

たとえば、これを実行すると:

phantomjs loadspeed.js http://www.yahoo.com

これを含むloadspeed.jsで:

"use strict";
var page = require('webpage').create(),
    system = require('system'),
    t, address;

if (system.args.length === 1) {
    console.log('Usage: loadspeed.js <some URL>');
    phantom.exit(1);
} else {
    t = Date.now();
    address = system.args[1];
    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('FAIL to load the address');
        } else {
            t = Date.now() - t;
            console.log('Page title is ' + page.evaluate(function () {
                return document.title;
            }));
            console.log('Loading time ' + t + ' msec');
        }
        phantom.exit();
    });
}

次の出力が得られます。

Page title is Yahoo
Loading time 700 msec

ただし、単純な悪夢を実行しようとすると:

node --harmony hello_nightmare.js

これを含む hello_nightmare.js で:

var Nightmare = require('nightmare');

var google = new Nightmare()
  .goto('http://google.com')
  .wait()
  .run(function(err, nightmare) {
    if (err) return console.log(err);
    console.log('Done!');
  });

出力がまったく得られません。コマンドラインで「Enter」を押したような気がします。

また、悪夢の github サイトで例を試しました。

npm install nightmare vo
node --harmony hello_nightmare_main.js

これを含む hello_nightmare_main.js で:

var Nightmare = require('nightmare');
var vo = require('vo');

vo(function* () {
  var nightmare = Nightmare({ show: true });
  var link = yield nightmare
    .goto('http://yahoo.com')
    .type('input[title="Search"]', 'github nightmare')
    .click('.searchsubmit')
    .wait('.ac-21th')
    .evaluate(function () {
      return document.getElementsByClassName('ac-21th')[0].href;
    });
  yield nightmare.end();
  return link;
})(function (err, result) {
  if (err) return console.log(err);
  console.log(result);
});

そして、それはまだ機能しません。

どうすればこの悪夢を解決できますか?

4

4 に答える 4

9

私は後世のためにこれを投稿しているだけです。

以下は、クリーンな Ubuntu Linux マシンに node (4.2.4) で nightmarejs をインストールするための bash スクリプトです。14.04 を実行している DigitalOcean ドロップレットでこれをテストしました。

apt-get -y update
apt-get -y upgrade
apt-get -y --force-yes install make unzip g++ libssl-dev git xvfb 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 gcc-multilib g++-multilib
mkdir src
cd src
wget https://nodejs.org/dist/v4.2.4/node-v4.2.4.tar.gz
tar xzf node-v4.2.4.tar.gz
cd node-v4.2.4
./configure
make -j2
make install
cd ..
mkdir nightmarejs
cd nightmarejs
npm -f init
npm install --save nightmare vo

次に、.js ファイル (hello_nightmare.js など) を (nightmarejs がインストールされているのと同じディレクトリに) 作成し、以下のコマンドを使用して実行します (@yoz の回答で既に述べたように)。

xvfb-run node --harmony hello_nightmare.js

これが役立つことを願っています。

于 2016-01-14T19:49:09.130 に答える